PHP では、参照ループを使用するには foreach ステートメントのみが必要で、その後、ループ本体で元の配列を操作 (変更) すると、元の配列自体に影響します。構文「foreach ($array as &$)」 value )//ループ本体ステートメント ブロック;}」または「foreach ($array as $key => &$value){//ループ本体ステートメント ブロック;}」。
このチュートリアルの動作環境: Windows 7 システム、PHP バージョン 8.1、DELL G3 コンピューター
foreach は、トラバース用に特別に設計されたステートメントです。 arrays は、配列を走査するときに一般的に使用されるメソッドであり、配列の走査に非常に便利です。PHP5 以降では、オブジェクトも走査できるようになりました (foreach は配列とオブジェクトにのみ適用できます)。
foreach ステートメントは、配列の添字に関係なく配列を走査し、不連続なインデックス配列や文字列を添字として持つ連想配列に使用できます。
#foreach ステートメントには 2 つの構文形式があります:
文法形式 1:
foreach ($array as $value){ //循环体语句块; }
構文形式 2:
foreach ($array as $key => $value){ //循环体语句块; }
foreach ループで元の配列を変更する
通常、foreach ステートメントを使用して配列を走査する場合、配列のバックアップは通常、アレイ自体には影響しません。 例: ループ内で配列を変更し、ループ外で配列にアクセスすると、配列が変更されていないことがわかります<?php header("Content-type:text/html;charset=utf-8"); $array= array(1,2,3,4,5,); echo "原数组:"; var_dump($array); foreach ($array as $value) { $value = $value*2; // 元素值乘以2 } echo "foreach处理后的数组:"; var_dump($array); ?>
しかし、場合によっては foreach ループを通じて配列を変更する必要がある場合、どうすればよいでしょうか?
参照サイクルを使用できます (つまり、$value の前に
& を追加します。これにより、foreach ステートメントは、値の代わりに参照によって値を割り当てます)。値をコピーするなど)、ループ本体内の元の配列に対する操作は、元の配列自体に影響を与えます。
<?php header("Content-type:text/html;charset=utf-8"); $array= array(1,2,3,4,5,); echo "原数组:"; var_dump($array); foreach ($array as &$value) { $value = $value*2; // 元素值乘以2 } echo "foreach处理后的数组:"; var_dump($array); ?>
& があります。これの何が問題なのでしょうか?削除するにはどうすればよいですか?
$value 参照が foreach ループ後に残るためです。出力する前に unset() を使用して配列を破棄する必要があります。
unset($value); // 最后取消掉引用 var_dump($array)
& シンボルが消えました。
PHP ビデオ チュートリアル 」
以上がPHPのforeachループで元の配列を変更する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。