要同時循環兩個數組,問題中提供的程式碼採用巢狀的 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中文網其他相關文章!