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 に答える