要素をプッシュすると、PHP が新しい配列を作成するのはなぜですか?
$a = array();
$b = $a;
$b[] = "Hello!";
echo count($a);
echo count($b);
ここでは、$a と $b のカウントが等しいと予想しますが、そうではありません。
デフォルトでは、PHP は値を割り当てるときに値をコピーします。参照が必要な場合は、&
演算子を使用できます。
$a = array();
$b = &$a;
$b[] = "Hello!";
echo count($a); // prints 1
echo count($b); // prints 1
これは、$a
と$b
が 2 つの別個の変数であるためです。代入すると、 to$b = $a
の内容をコピーするだけで、両方が同じ配列を指すようにはなりません。$a
$b
これを行うには、代わりに参照を渡す必要があります。
$b = &$a;
この場合、$b は $a への参照を指します。つまり、両方が同じ配列を指していることを意味し、一方を変更すると両方が変更されます。