본문 바로가기
PHP

[PHP] MultipleIterator 와 foreach로 여러 배열 동시에 반복하기

by teamnova 2025. 10. 15.
728x90

안녕하세요. 

오늘은 MultipleIterator 와 foreach 를 활용하여 여러 배열 동시에 반복해보도록 하겠습니다. 

 

MultipleIterator 

서로 다른 여러 배열의 같은 인덱스에 있는 값들을 한 번에 가져와야 할 때가 있습니다.

보통 for 루프와 $i 인덱스를 사용하지만, 코드가 지저분해지기 쉽습니다.

MultipleIterator를 활용하면 여러 배열(또는 이터레이터)을 하나로 묶어, foreach 루프 한 번으로 각 배열의 요소들을 동시에 접근할 수 있습니다. 

 

예제

상품 ID, 이름, 가격이 각각 다른 배열에 담겨 있을 때, MultipleIterator를 사용해 한 번에 출력하는 예제입니다.

 

<?php

$ids = [101, 102, 103];
$names = ['사과', '바나나', '오렌지'];
$prices = [1500, 3000, 1200];

// 여러 배열을 하나로 묶어주는 MultipleIterator 생성
$mi = new MultipleIterator(MultipleIterator::MIT_KEYS_ASSOC);
$mi->attachIterator(new ArrayIterator($ids), 'ID');
$mi->attachIterator(new ArrayIterator($names), '상품명');
$mi->attachIterator(new ArrayIterator($prices), '가격');

// foreach 한 번으로 모든 배열의 요소에 접근
foreach ($mi as $item) {
    echo "{$item['ID']}번 상품: {$item['상품명']}, 가격: {$item['가격']}원\n";
}
?>

 

결과 

101번 상품: 사과, 가격: 1500원
102번 상품: 바나나, 가격: 3000원
103번 상품: 오렌지, 가격: 1200원