PHP 4 では、Perl や他の言語と同様に、foreach 構造が導入されました。これは、配列を反復処理するための単なる便利な方法です。 foreach は配列でのみ使用でき、他のデータ型または初期化されていない変数で使用しようとするとエラーが発生します。 2 つの構文があり、2 番目の構文は重要度は低いですが、最初の構文を拡張したものです。
foreach (array_expression as $value) statement foreach (array_expression as $key => $value) statement
最初の形式は、指定された array_expression 配列を反復処理します。ループを通過するたびに、現在のセルの値が $value に割り当てられ、配列内のポインターが 1 ステップ前に移動します (そのため、次のループで次のセルが取得されます)。
2 番目の形式でも同じことを行いますが、現在のユニットのキー名が各ループの変数 $key にも割り当てられる点が異なります。
PHP 5 以降、オブジェクトをトラバースすることも可能です。
注: foreach の実行が開始されると、配列内のポインターは自動的に最初のユニットを指します。これは、foreach ループの前にreset()を呼び出す必要がないことを意味します。
注: 配列が参照されない限り、foreach は配列自体ではなく、指定された配列のコピーを操作します。 foreach は配列ポインターにいくつかの副作用をもたらします。リセットされない限り、foreach ループ中またはループ後に配列ポインターの値に依存しないでください。
PHP 5 以降では、$value の前に & を追加することで配列の要素を簡単に変更できます。このメソッドは、値をコピーするのではなく、参照によって割り当てます。
<?php $arr = array(1, 2, 3, 4); foreach ($arr as &$value) { $value = $value * 2; } // $arr is now array(2, 4, 6, 8) ?>
このメソッドは、走査される配列が参照できる場合 (たとえば、変数である場合) にのみ使用できます。
<?php foreach (array(1, 2, 3, 4) as &$value) { $value = $value * 2; } ?>
PHP のその他の関数 - foreach() の使用法の詳細な説明については、PHP 中国語 Web サイトの関連記事に注目してください。