他们不应该让脚本使用更少的内存吗?
function a(&$var);
使用的内存超过function a($var);
和foreach($array as $k => &$v)
使用的内存比foreach($array as $k => $v)
例如$var
使用24 MB。
如果我通过引用传递它它使用27 MB
答案 0 :(得分:2)
(不幸的是)我没有能够详细解释zend引擎内部的 magic ,我指的是documentation:
PHP中的引用是一种通过不同名称访问相同变量内容的方法。它们不像C指针;例如,您不能使用它们执行指针运算,它们不是实际的内存地址,依此类推。有关详细信息,请参阅参考资料。相反,它们是符号表别名。请注意,在PHP中,变量名称和变量内容是不同的,因此相同的内容可以具有不同的名称。最接近的类比是Unix文件名和文件 - 变量名是目录条目,而变量内容是文件本身。引用可以比作Unix文件系统中的硬链接。
我认为与unix文件系统的比较很容易理解。如果文件有多个名称,则需要额外的内存来存储这些名称。