ネストされた foreach ループを使用して複数の配列をループする場合、次のような落とし穴を避けることが重要です。最初の配列の各要素に対して 2 番目の配列のすべての要素をループします。これにより、不正確な結果が生じます。
1. array_map() メソッド (PHP >=5.3)
array_map() を使用すると、複数の配列を引数として渡し、同時にループすることができます。
array_map(function($v1, $v2){ echo $v1 . "<br>"; echo $v2 . "<br><br>"; }, $data1, $data2);
2 。 MultipleIterator メソッド (PHP >=5.3)
MultipleIterator を作成し、ループする配列ごとに ArrayIterator オブジェクトをアタッチします。
$it = new MultipleIterator(); $it->attachIterator(new ArrayIterator($data1)); $it->attachIterator(new ArrayIterator($data2)); foreach($it as $a) { echo $a[0] . "<br>"; echo $a[1] . "<br><br>"; }
3.カウンタを使用した for ループ (PHP >=4.3)
両方の配列のキーとしてカウンタ変数を使用した for ループを使用します。
$keysOne = array_keys($data1); $keysTwo = array_keys($data2); $min = min(count($data1), count($data2)); for($i = 0; $i < $min; $i++) { echo $data1[$keysOne[$i]] . "<br>"; echo $data2[$keysTwo[$i]] . "<br><br>"; }
4. array_combine() メソッド (PHP >=5.0)
配列に一意の値がある場合は、array_combine() を使用してそれらをキーと値のペアに結合します。$data1 がキー、$data2は値です。
foreach(array_combine($data1, $data2) as $d1 => $d2) { echo $d1 . "<br>"; echo $d2 . "<br><br>"; }
5. call_user_func_array() メソッド (PHP >=5.6)
3 つ以上の配列または不明な数の配列をループするには、array_map() と call_user_func_array() を使用します。
$func = function(...$numbers){ foreach($numbers as $v) echo $v . "<br>"; echo "<br>"; }; call_user_func_array("array_map", [$func, $data1, $data2]);
以上がPHP で複数の配列を同時に効率的に反復処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。