When looping through multiple arrays using nested foreach loops, it's important to avoid the pitfall of looping through all elements of the second array for each element of the first array. This leads to incorrect results.
1. array_map() Method (PHP >=5.3)
array_map() allows you to pass multiple arrays as arguments and loop through them simultaneously.
array_map(function($v1, $v2){ echo $v1 . "<br>"; echo $v2 . "<br><br>"; }, $data1, $data2);
2. MultipleIterator Method (PHP >=5.3)
Create a MultipleIterator and attach ArrayIterator objects for each array you want to loop through.
$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 Loop with Counter (PHP >=4.3)
Use a for loop with a counter variable as the key for both arrays.
$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() Method (PHP >=5.0)
If the arrays have unique values, use array_combine() to combine them into a key-value pair, where $data1 is the key and $data2 is the value.
foreach(array_combine($data1, $data2) as $d1 => $d2) { echo $d1 . "<br>"; echo $d2 . "<br><br>"; }
5. call_user_func_array() Method (PHP >=5.6)
For looping through more than two arrays or an unknown number of arrays, use array_map() with 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]);
The above is the detailed content of How to Efficiently Iterate Through Multiple Arrays Simultaneously in PHP?. For more information, please follow other related articles on the PHP Chinese website!