0
<?php 
  /* Assignment of array variables */
  $arr = array(1);
  $a =& $arr[0]; //$a and $arr[0] are in the same reference set
  $arr2 = $arr; //not an assignment-by-reference!
  $arr2[0]++;
?> 

输出为$a == 2, $arr == array(2)。的内容$arr已更改,即使它不是参考!

谁能告诉这怎么可能?

4

1 回答 1

0

在 PHP 中,所有的数组复制都是通过引用进行的。如果你想要一个浅拷贝,你需要显式地复制一些东西。

因此,即使您没有$arr2通过引用分配,因为$arr是一个数组,它们最终都会引用同一个数组对象。

于 2012-06-23T09:03:16.247 回答