ホームページ >バックエンド開発 >PHPチュートリアル >参照渡しで foreach ループを使用すると、PHP 配列の最後の要素が重複するのはなぜですか?
PHP Foreach Pass by Reference: 最後の要素重複の謎が明らかに
次の PHP コードを考えてみましょう:
実行すると、元の配列 $arr が予期せず変更され、次のような結果になります。出力:
動作を理解する
最初の foreach ループの後、変数 $item は $arr[2] と同じメモリ位置への参照のままになります。 。したがって、引数を値で渡す 2 番目の foreach ループの各反復では、参照された値 (したがって $arr[2]) が新しい反復の値に置き換えられます。
詳細な説明
最初のループ:
最初のループの終わりでも、$item はまだ次を指しています。 $arr[2].
2 番目のループ:
明確化誤解
この動作はバグとはみなされません。これは、PHP の参照の意図された動作と一致しています。ループの外で次の構文を使用した場合にも、同様の結果が観察されます。
結論
PHP で参照を操作する場合、次のことを認識することが重要です。参照された変数を通じて行われた変更は、元の値にも影響します。この動作は、望ましい結果に応じて効果的に活用することも、回避することもできます。
以上が参照渡しで foreach ループを使用すると、PHP 配列の最後の要素が重複するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。