PHP如何实现“动态”变量?

时间:2012-09-22 22:39:52

标签: php variables interpreter

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

$star = "Aquarius";
$star = 11;

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

例如你不能这样做:

var dynamic = "Hello";
dynamic = 3;

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

感谢。

3 个答案:

答案 0 :(得分:7)

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

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

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

答案 1 :(得分:0)

PHP是一种动态语言,与Perl,Ruby,Python或许多其他语言类似。另一方面,C ++是经过编译和静态类型的,要求每个变量都有一个在编译时定义的类型。

查看PHP文档,了解对PHP动态类型实现的一些了解: http://php.net/manual/en/language.types.type-juggling.php

答案 2 :(得分:0)

PHP是一种松散类型的语言。 PHP根据值将变量转换为正确的数据类型。

检查一下 - http://php.net/manual/en/language.types.type-juggling.php