foreach と for を使用して配列をループする方法
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 />'; } ?>
例の実行の出力:
wang: 18 li: 20 zhang: 25
ヒント
foreach の実行が開始されると、配列内のポインターは自動的に最初のユニット。これは、foreach ループの前にリセット() を呼び出す必要がないことを意味します。
foreach は、配列自体ではなく、指定された配列のコピーを操作します。返された配列要素を変更しても、元の配列には影響しません (以下の例を参照)。ただし、foreach ループが最後まで実行されると、元の配列の内部ポインターは配列の末尾を指すようになります。
<?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 の元の配列要素を変更するには、上記の例を次のように変更します:
<?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); ?>
例の実行の出力:
18 20 25 Array ( [wang] => 28 [li] => 30 [zhang] => 35 )
多次元をトラバースします。 array
foreach 構文構造は、1 次元配列 を走査する場合にのみ使用できます。多次元配列を走査するには、通常、foreach ネストされた再帰を使用するか、元の配列を 1 次元配列に分割してから foreach 走査を実行します。
A 2次元配列の混合例:
$arr_age = array("wang"=>18, "li"=>20, "zhang"=>array("name"=>"小张", "age"=>25)); foreach ($arr_age as $age) { if(is_array($age)){ foreach ( $age as $detail) { echo $detail,'<br />'; } } else { echo $age,'<br />'; } } ?>
この出力例の実行:
18 20 小张 25
多次元配列の走査 処理には、実際のデータ構造に基づいた最適な処理方法が必要です。
拡張先読み
PHP 配列は HashTable テーブルを通じて実装されるため、foreach は要素が追加される順序に従って配列を走査します。インデックス サイズによって反復処理を行う場合は、for() ループを使用する必要があります。
for() は配列をループします
連続キー値の配列を操作している場合は、for() ループを使用して配列を走査することもできます:
<?php $arr_age = array(18, 20, 25); $num = count($arr_age); for($i = 0; $i < $num; $i++){ echo $arr_age[$i]."<br />"; } ?>
この例を実行した出力は次のとおりです:
18 20 25
ヒント
list() を each() と組み合わせて使用して配列を走査することもできますが、テストの結果、foreach() ほど効率的ではないことがわかりました。
りー以上がforeach と for を使用して配列をループする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









foreach ループを使用して PHP 配列から重複要素を削除する方法は次のとおりです。配列を走査し、要素がすでに存在し、現在の位置が最初に出現しない場合は、要素を削除します。たとえば、データベース クエリの結果に重複レコードがある場合、このメソッドを使用してそれらを削除し、重複レコードのない結果を取得できます。

PHP の配列キー値の反転メソッドのパフォーマンスを比較すると、array_flip() 関数は、大規模な配列 (100 万要素以上) では for ループよりもパフォーマンスが良く、所要時間が短いことがわかります。キー値を手動で反転する for ループ方式は、比較的長い時間がかかります。

PHP で配列をディープ コピーする方法には、json_decode と json_encode を使用した JSON エンコードとデコードが含まれます。 array_map と clone を使用して、キーと値のディープ コピーを作成します。シリアル化と逆シリアル化には、serialize と unserialize を使用します。

PHP で配列のディープ コピーを実行するためのベスト プラクティスは、 json_decode(json_encode($arr)) を使用して配列を JSON 文字列に変換し、それから配列に戻すことです。 unserialize(serialize($arr)) を使用して配列を文字列にシリアル化し、それを新しい配列に逆シリアル化します。 RecursiveIteratorIterator を使用して、多次元配列を再帰的に走査します。

多次元配列のソートは、単一列のソートとネストされたソートに分類できます。単一列のソートでは、array_multisort() 関数を使用して列ごとにソートできますが、ネストされたソートでは、配列を走査してソートするための再帰関数が必要です。具体的な例としては、製品名による並べ替えや、売上数量や価格による化合物の並べ替えなどがあります。

PHP の array_group_by 関数は、キーまたはクロージャ関数に基づいて配列内の要素をグループ化し、キーがグループ名、値がグループに属する要素の配列である連想配列を返すことができます。

PHP 配列のマージおよび重複排除アルゴリズムは、元の配列を小さなブロックに分割して並列処理する並列ソリューションを提供し、メイン プロセスは重複排除するブロックの結果をマージします。アルゴリズムのステップ: 元の配列を均等に割り当てられた小さなブロックに分割します。重複排除のために各ブロックを並行して処理します。ブロックの結果をマージし、再度重複排除します。

PHP の array_group() 関数を使用すると、指定したキーで配列をグループ化し、重複する要素を見つけることができます。この関数は次の手順で動作します。 key_callback を使用してグループ化キーを指定します。必要に応じて、value_callback を使用してグループ化値を決定します。グループ化された要素をカウントし、重複を特定します。したがって、array_group() 関数は、重複する要素を見つけて処理するのに非常に役立ちます。
