目的は何ですか?
目的は何ですか?
どういう意味ですか?無知で申し訳ありませんが、どういう意味ですか?
PHP foreach は動作するために配列をコピーする必要はありません。配列をコピーする必要があることをどこで知りましたか?
PHPのforeachは配列のコピーを走査するのは、おそらく走査中の変更(項目の追加)によって引き起こされる無限ループを回避するためだと思います。
単なる推測です。 。 。
質問者が知りたいのは、foreach
的内部实现时, 是复制了一个临时变量
実際の配列の操作方法ではなく、操作方法です
私はこの質問についていつも混乱していました。次の回答は参考用です。笑
PHPカーネルを深く理解するためのリファレンス
リーリー操作するための証明を見てみましょう foreach
在循环是确实是复制了一个临时变量
リーリー
リーリー
上記のように、内部で呼び出された場合、ループ処理は変更されませんforeach
在循环开始前, 调用next
或end
时, 会改变数组指针位置,而在foreach
走査されたコードでは、配列ポインタが end、next などで操作されるとき、配列ポインタは変化しません。これは、PHP カーネルが FETCH 操作を実行するときに、現在操作されている配列の内部ポインタが変更されるためです。要素を走査するたびに、以前に保存されたポインタ位置が最初に取得され、次の要素を取得した後にポインタ位置が復元されます。キーは FETCH の実行中に中間変数にあります。オペコードここでは、
ループ中に時々動作する元の配列が、元の配列のコピーであることがわかります。
foreach
それでは、元の配列を操作するのではなく、なぜ配列をコピーして操作する必要があるのかという質問に答えましょう。私の考えは、
の元の配列の値を変更する、または新しい要素を追加すると、どうなるでしょうか? 質問者さんがこう考えれば分かりますforeach
操作的是原数组, 那么在foreach
リーリー