foreach ループは元の配列のコピーを使用します。參照割り當(dāng)て後に元の配列を変更できるのはなぜですか?
リーリー この段落は、foreach 操作が元の配列のコピーであることを証明できます。
さらに、元の配列は同期中に途中で失われ、元の配列の內(nèi)部ポインタは 1 回だけ移動(dòng)されました。
後続の操作すべてコピー上で実行される
參照代入を使用する場(chǎng)合、配列の參照狀況は以下のようになります
リーリー辛抱強(qiáng)いご回答ありがとうございました
& 記號(hào)を追加した後は、元の配列のコピーは使用されません。アンパサンドがなければ、それは確かに元の配列のコピーです。アンパサンドの追加はポインターと同等であり、それに名前を割り當(dāng)てるだけです。したがって、新しい配列を変更すると、元の配列も変更されます。
PHP 5 以降では、$value の前に & を追加することで配列のセルを簡(jiǎn)単に変更できます。このメソッドは、値をコピーするのではなく、參照によって割り當(dāng)てます。
アドレスを渡すシンボル&
を追加すると、$aNewValue は配列內(nèi)の各要素へのポインターになります。これは、元の配列を変更するのと同じです
PHP は書(shū)き込み時(shí)にコピーします。コピー時(shí)に値を指すために新しいポインターを使用するだけです。
これは変數(shù)への參照であり、2 つの変數(shù)は同じアドレスを指します。コピーを操作すると、元の配列も変更されます。