PHP如何实现"动态"变量?

rtu*_*ner 7 php variables interpreter

当我今天测试以下代码时,我感到很惊讶:

$star = "Aquarius";
$star = 11;
Run Code Online (Sandbox Code Playgroud)

在调试时,我观察到$star只是从一个string类型更改为integer类型.我对此功能感到惊讶.例如,在C++中,这是不可能的,但在c#中我考虑了var变量,但它不一样.

例如,你做不到:

var dynamic = "Hello";
dynamic = 3;
Run Code Online (Sandbox Code Playgroud)

我开始想知道当我基本上说$ star = 11时究竟发生了什么.我的猜测是$star简单地重新初始化,因为它被直接分配给(但这似乎很奇怪,因为解释器已经知道变量$star已经被声明了) .任何人都可以帮助一些明确或官方的源支持解释吗?

谢谢.

Dar*_*les 7

在C/C++中,类型是在编译时定义的,因为可以基于它进行优化.

在C#中,编译器根据上下文推断出类型,在编译器大脑中,它用var类型替换关键字.这就是编译器进行初始推断后无法更改类型的原因.

在像PHP这样的脚本语言中,变量是哈希映射(关联数组,符号表)的入口.这定义了命名空间(和范围).实际值部分是存储值和类型的通用对象类型.