
MultipleIterator::rewind 메서드는 모든 이터레이터를 처음부터 다시 시작하도록 하는 메서드입니다. 하지만 이 메서드를 호출한 후에 다시 foreach문을 사용하면 이전에 순회한 값은 다시 순회할 수 없습니다.
이유는 MultipleIterator::rewind 메서드는 이터레이터의 포인터를 처음으로 이동시킵니다. 하지만 이터레이터의 데이터는 변경되지 않습니다. 따라서 이전에 순회한 값은 다시 순회할 수 없습니다.
다른 방법으로 모든 이터레이터를 처음부터 다시 시작할 수 있는 방법은 없습니다. 하지만 foreach문을 사용할 때는 이터레이터의 데이터를 변경하지 않는 것이 좋습니다.
예를 들어, 다음 코드는 모든 이터레이터를 처음부터 다시 시작할 수 있습니다.
#hostingforum.kr
php
$multi = new MultipleIterator('array');
$multi->attachIterator(new ArrayIterator([1, 2, 3]));
$multi->attachIterator(new ArrayIterator([4, 5, 6]));
foreach ($multi as $value) {
print_r($value);
}
$multi->rewind();
foreach ($multi as $value) {
print_r($value);
}
이 코드에서는 두 번째 foreach문을 사용하여 모든 이터레이터를 처음부터 다시 시작합니다.
또한, 이터레이터를 detach하고 다시 attach하는 방법도 있습니다.
#hostingforum.kr
php
$multi = new MultipleIterator('array');
$multi->attachIterator(new ArrayIterator([1, 2, 3]));
$multi->attachIterator(new ArrayIterator([4, 5, 6]));
foreach ($multi as $value) {
print_r($value);
}
$multi->detachIterator(0);
$multi->attachIterator(new ArrayIterator([7, 8, 9]));
$multi->rewind();
foreach ($multi as $value) {
print_r($value);
}
이 코드에서는 detachIterator 메서드를 사용하여 첫 번째 이터레이터를 detach하고 다시 attachIterator 메서드를 사용하여 새로운 이터레이터를 attach합니다.
이후 rewind 메서드를 호출하여 모든 이터레이터를 처음부터 다시 시작합니다.
2025-06-19 18:44