今日、私は PHP の公式マニュアル ページから記事What Reference Doを読んでいて、次のコードを見つけました。
<?php
$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) */
そして、このコードについてのマニュアルの説明:
配列内の参照は潜在的に危険です。右側の参照を使用して通常の (参照によるではない) 代入を実行しても、左側は参照に変わりませんが、配列内の参照はこれらの通常の代入で保持されます。これは、配列が値渡しされる関数呼び出しにも適用されます。
コードの実行後に $a と $arr が 2 になる理由を誰か説明してもらえますか?