두 배열을 동시에 반복하기 위해 질문에 제공된 코드는 중첩된 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!