foreachが走査するのは元の配列のコピーです foreachは最初に元の配列をコピーしてから走査するのか、それともポインタで1つずつ下に移動して値の情報とキーの情報を1つずつ保存するのか、専門家に質問したいです。次に、部分リング出力を実行しますか?
私は初心者です。上記は先生が説明した foreach の実行シーケンス図です。先生が説明した図に従うと、ポインターが 1 つずつ下に移動するにつれて、キーの値が 1 つずつコピーされます。そして出力します。
ただし、foreach ループ中に、元の配列は変更されます。元の配列に書き込み操作がない場合、Php の内部最適化は、書き込み操作が実行された場合、実際には元の配列をコピーしないとも言いました。元の配列はコピーされます。私の質問は、ポインター自体が foreach ループ中に移動し、最終的には不正な位置に移動するのですが、元の配列のポインターが移動しないのはなぜですか。 ?
以下に示すように
上図では、添字が 1 の場合、foreach ループ図によればポインタは添字 2 の要素を指しますが、添字が 1 の場合は元の配列がコピーされます。コピー処理中、ポインタは移動しません。なぜ、書き込み操作が実行されたときにポインタが指す要素を指すのでしょうか?緊急の解決策。ありがとうございます。
マーク foreach の原理を学びましょう
私の目には、foreach() の後の current() が最後の項目を指しているのが普通ではないでしょうか。配列内で
ループの最後の項目のポイントが間違っています