foreach
默认情况下,在PHP7中,按值进行迭代时,将根据以下内容对数组的副本进行操作:http : //php.net/manual/en/migration70.incompatible.php
它仅在对数组或值进行更改时才懒惰地创建副本吗?还是总是创建副本,并且实质上使引用循环实现性能优化?
此外,对象数组是否仍然循环/为您提供对象的引用?还是他们实际上还会为创建副本foreach
并按值返回对象?
在PHP 7中,如果按值迭代数组,则只有在实际修改了数组的情况下,复制才会延迟进行。
如果改为通过引用迭代数组,则将在循环开始时执行分隔。如果阵列当前在多个地方使用,则这种分离将导致复制。
此外,通过引用进行迭代意味着a)数组必须包装到引用中,并且b)每个元素也必须包装在引用中。创建引用包装是一项昂贵的操作,因为它需要分配。
此外,按引用进行迭代要求我们使用修改安全的迭代机制。这通过向数组注册迭代器并在各种数组修改操作中检查可能受影响的迭代器来进行。
因此,不,通过引用进行迭代肯定不是优化,而是反优化。通常使用引用。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句