PHPの「foreach」は実際にどのように機能しますか?
何foreachをし、何をし、どのように使用するか知っていると言って、これに接頭辞を付けましょう。この質問は、それがボンネットの下でどのように機能するかに関するものであり、「これは配列をループする方法です」という言葉に沿って回答したくありませんforeach。 長い間、私はそれforeachがアレイ自体で機能することを想定していました。それから私はそれが配列のコピーで動作するという事実への多くの参照を見つけました、そして私はそれが物語の終わりであるとそれ以来仮定しました。しかし、私は最近この問題について話し合い、少し実験したところ、これは実際には100%真実ではないことがわかりました。 私の言いたいことをお見せしましょう。次のテストケースでは、次の配列を使用します。 $array = array(1, 2, 3, 4, 5); テストケース1: foreach ($array as $item) { echo "$item\n"; $array[] = $item; } print_r($array); /* Output in loop: 1 2 3 4 5 $array after loop: 1 2 3 4 5 1 2 3 4 5 */ これは、ソース配列を直接操作していないことを明確に示しています。ループ中にアイテムを配列に常にプッシュしているため、ループが永久に継続します。しかし、これが事実であることを確認するために: テストケース2: foreach ($array …