在PHP7中进行每次更改

默认情况下,PHP7中的foreach按值迭代时,按照以下网址对数组副本进行操作:http://php.net/manual/en/migration70.incompatible.php

只有在对数组或值做了修改时,它才会懒散地创建副本,还是会始终创建一个副本,并且本质上是循环引用性能优化?

此外,对象数组仍然循环/给你的对象的引用? 或者他们是否也会为foreach创建副本并按值返回对象?


在PHP 7中,如果按值迭代数组,则只有在数组实际被修改时才会延迟复制副本。

如果您通过引用来迭代数组,则会在循环开始时执行分隔。 如果阵列当前在多个地方使用,则此分隔将导致副本。

此外,通过引用进行迭代意味着a)数组必须被包装到引用中,并且b)每个元素也必须包含在引用中。 创建引用包装器是一项昂贵的操作,因为它需要分配。

此外,通过引用进行迭代要求我们使用修改安全的迭代机制。 这可以通过向数组注册迭代器并检查各种数组修改操作中可能受影响的迭代器来实现。

所以不,通过引用进行迭代肯定不是优化,而是优化。 通常使用参考是。

链接地址: http://www.djcxy.com/p/39585.html

上一篇: foreach changes in PHP7

下一篇: Would VS2008 c++ compiler optimize the following if statement?