13

多年来,我一直是一名 PHP 开发人员,但我不知道 PHP 如何在幕后处理变量及其类型的一个细节。我的意思是:在 PHP 中 - 理论上 - 我可以使用相同的变量来存储一个整数,然后是一个字符串,然后是一个布尔值,然后是一个数组......等等......

就个人而言,我讨厌这种“糟糕的”编程方式,但我想知道 PHP 如何按照我的要求存储和管理变量及其类型。我想象解释器在后面创建和处理 C 变量,但我不知道如何。

谢谢你。

4

2 回答 2

12

在幕后,PHP 变量存储在“zval”结构中,该结构由变量可以存储的所有数据类型之间的联合组成(例如,long、double、字符串指针/长度、对象指针...),以及联合之外的几个其他字段,它们指示它是哪种类型并跟踪引用计数。

对此有一些进一步的讨论:

http://devzone.zend.com/317/extension-writing-part-ii-parameters-arrays-and-zvals/

于 2012-05-02T16:56:01.850 回答
-1

如果我没记错的话,PHP 将为 PHP 中的每个变量在内存中启动几个变量:

$test = 0;

翻译为...

int test = 0;
float test = 0;
char test = 0;
bool test = false;
pointer test = null;
...
于 2012-05-02T16:57:12.963 回答