foreach是否始终在PHP中的无引用上创建副本?
-
04-07-2019 - |
题
我想知道PHP是否内置了这种优化。通常在不使用引用的情况下调用foreach时,它会复制传递的数组并对其进行操作。如果对该数组的引用计数仅为1,会发生什么?
例如,假设getData返回一些数据数组。
foreach(getData() as $data)
echo $data;
由于getData()返回的数组只有一个引用,不应该仅仅通过引用使用而不是先复制,或者php没有这个优化吗?
这似乎是一个简单的优化,可以帮助很多编写错误的代码。
解决方案
我不能肯定地说,但PHP通常使用“copy on write”,因此在您尝试写入之前,所有内容都是引用,此时会复制并写入副本。
不隶属于 StackOverflow