要同时循环两个数组,问题中提供的代码采用嵌套的 foreach 循环。然而,这种方法效率低下,因为它会产生不正确的结果。
以下是克服这一挑战的有效解决方案:
此方法允许同时循环多个数组。
array_map(function($v1, $v2){ echo $v1 . "<br>"; echo $v2 . "<br><br>"; }, $data1, $data2);
创建一个 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>"; }
使用带有计数器的 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>"; }
如果数组具有唯一值,请使用 array_combine() 创建一个数组,其中第一个数组中的元素作为键,第二个数组中的元素作为值.
foreach(array_combine($data1, $data2) as $d1 => $d2) { echo $d1 . "<br>"; echo $d2 . "<br><br>"; }
要循环未知数量的数组,请将 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中文网其他相关文章!