ホームページ >バックエンド開発 >PHPチュートリアル >PHP 配列トラバーサルの foreach 構文構造と例
foreach()
PHP の foreach() 構文構造は、操作または出力配列の走査に使用されます。foreach() は、他のデータ型または初期化されていない変数に使用しようとすると発生します。 。 間違い。
構文:
foreach (array as $value) statement // 或者: foreach (array as $key => $value) statement
上記の構文では、各ループは現在のユニットの値を $value に割り当て、配列内のポインターが 1 ステップ先に進みます。 2 番目の構文形式では、現在のユニットのキー名も各ループの変数 $key に割り当てられます。
例:
<?php $arr_age = array("wang"=>18, "li"=>20, "zhang"=>25); foreach ($arr_age as $age) { echo $age,'<br />'; } ?>
例の実行の出力:
18 20 25
配列キー値の使用
<?php $arr_age = array("wang"=>18, "li"=>20, "zhang"=>25); foreach ($arr_age as $key=>$age) { echo $key,': ',$age,'<br />'; } ?>
例の実行の出力:
りー
foreach の実行が開始されると、配列内のポインターは自動的に最初の要素を指すようになります。これは、foreach ループの前にreset() を呼び出す必要がないことを意味します。
foreach は、配列自体ではなく、指定された配列のコピーを操作します。返された配列要素を変更しても、元の配列には影響しません (以下の例を参照)。ただし、foreach ループが最後まで実行されると、元の配列の内部ポインターは配列の末尾を指すようになります。
wang: 18 li: 20 zhang: 25実行例 出力:
<?php $arr_age = array("wang"=>18, "li"=>20, "zhang"=>25); foreach ($arr_age as $age) { $age = $age+10; echo $age,'<br />'; } // 输出原数组 print_r($arr_age); ?>
を参照して実現でき、上記の例を次のように変更します。
うわー
実行例 出力 出力 出力 出力 出力 :
28 30 35 Array ( [wang] => 18 [li] => 20 [zhang] => 25 )
多次元配列の走査
foreach 構文構造は、1 次元配列を走査する場合にのみ使用できます。多次元配列を走査するには、通常、foreach を使用します。ネストされた再帰、または元の配列を 1 次元配列に分割してから、foreach 走査を実行します。
1次元配列と2次元配列を混在させる例:
<?php $arr_age = array("wang"=>18, "li"=>20, "zhang"=>25); foreach ($arr_age as &$age) { $age = $age+10; echo $age,'<br />'; } // 输出原数组 print_r($arr_age); ?>
多次元配列の走査処理には、実際のデータ構造に基づいた最適な処理方法が必要です。
PHP 配列は HashTable テーブルを通じて実装されるため、foreach は要素が追加される順序に従って配列を走査します。インデックス サイズによって反復処理を行う場合は、for() ループを使用する必要があります。
配列を走査するための for() ループ
連続キー値の配列を操作している場合、配列を走査するために for() ループを使用することもできます:
18 20 25 Array ( [wang] => 28 [li] => 30 [zhang] => 35 )list() とeach() を組み合わせて配列を走査しましたが、テストでは効率が foreach() ほど良くないことがわかりました。
上記の PHP 配列トラバーサルの foreach 構文構造と例はすべて、編集者が皆さんに共有した内容であり、参考にしていただければ幸いです。また、PHP 中国語 Web サイトにももっと注目していただければ幸いです。