>백엔드 개발 >PHP 튜토리얼 >PHP에서 여러 배열을 동시에 효율적으로 반복하는 방법은 무엇입니까?

PHP에서 여러 배열을 동시에 효율적으로 반복하는 방법은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-12-02 09:36:14112검색

How to Efficiently Iterate Through Multiple Arrays Simultaneously in PHP?

두 배열을 동시에 반복

중첩 foreach 루프 문제

중첩 foreach 루프를 사용하여 여러 배열을 반복할 때 다음과 같은 함정을 피하는 것이 중요합니다. 첫 번째 배열의 각 요소에 대해 두 번째 배열의 모든 요소를 ​​반복합니다. 이는 잘못된 결과로 이어집니다.

해결책

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)

세 개 이상의 배열 또는 알 수 없는 개수의 배열을 반복하려면 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.