我想知道PHP是否内置了这种优化。通常在不使用引用的情况下调用foreach时,它会复制传递的数组并对其进行操作。如果对该数组的引用计数仅为1,会发生什么?

例如,假设getData返回一些数据数组。

foreach(getData() as $data)
    echo $data;

由于getData()返回的数组只有一个引用,不应该仅仅通过引用使用而不是先复制,或者php没有这个优化吗?

这似乎是一个简单的优化,可以帮助很多编写错误的代码。

有帮助吗?

解决方案

我不能肯定地说,但PHP通常使用“copy on write”,因此在您尝试写入之前,所有内容都是引用,此时会复制并写入副本。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top