这个foreach会复制内存中的值吗?

ope*_*rog 1 php

例:

foreach ($veryFatArray as $key => $value) {
Run Code Online (Sandbox Code Playgroud)

foreach会通过引用$ value来分配$ key后面的值,还是$ value是存储在数组中的内容的副本?如果是,我怎么才能得到参考?数组值存储了大量数据,因此复制它们并不是很好.

cle*_*tus 6

不要试着再猜测翻译是这里故事的寓意.$value实际上是一个副本,但有效的副本.PHP使用pass-by-value(对于非对象),但也使用copy-on-write.这意味着如果你写:

foreach ($bigitems as $bigitem) {
  echo $bigitem;    // uses original
  $bigitem = 'foo'; // item copied and assigned 'foo'
  echo $bigitem;    // uses copy
}
Run Code Online (Sandbox Code Playgroud)

只是声明你的意图:你想要使用数组值.让PHP在此之后对其进行排序.如果您打算更改数组,基本上只使用循环中的引用.否则,您将向发送代码的其他人发送错误消息.

PHP语言中Copy-on-Write的第1部分应该告诉您有关PHP copy-on-write的所有信息.