【问题标题】:How does PHP handle variables?PHP如何处理变量?
【发布时间】:2012-05-12 04:36:26
【问题描述】:

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

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

谢谢。

【问题讨论】:

  • 非常好,我是一名 C++ 程序员,是 php 新手,我也一直在想。
  • 这个词是“动态类型的”,而不是“糟糕的”,因为它不一定是负面的。

标签: php c


【解决方案1】:

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

在以下位置对此进行了进一步讨论:

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

【讨论】:

  • 非常详尽!谢谢你:)
【解决方案2】:

如果我没记错的话,PHP 会为 PHP 中的每个变量在内存中初始化几个变量:

$test = 0;

翻译成...

int test = 0;
float test = 0;
char test = 0;
bool test = false;
pointer test = null;
...

【讨论】:

  • 如果这是真的,那么它的效率非常低,没有充分的理由。引用?
  • 看黄昏的回答,比我的要好。
  • 他的回答说的有些不同。事实上,他的回答暗示只存在一个变量。
  • @delnan 没有人说效率是目标。它不是。这是 PHP,一种为构建动态网站而开发的脚本语言。效率排在关注点的后面。
  • @meagar 根据需要为每个值 占用(大约)五倍的内存不仅效率低下,而且简直是邪恶的,不管性能有多重要。这就像故意将乘法实现为循环和相加的 PHP 函数。这只是愚蠢的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-01-22
  • 2010-12-26
  • 1970-01-01
  • 1970-01-01
  • 2018-11-07
  • 1970-01-01
  • 2015-05-12
相关资源
最近更新 更多