
NoRewindIterator의 key() 메서드는 현재 포인터 위치의 키를 반환합니다. 그러나 rewind() 메서드를 호출하면 iterator가 처음부터 시작되며, key() 메서드는 이전에 반환한 키를 반환합니다.
이유는 NoRewindIterator가 rewind() 메서드를 오버라이드하여 iterator를 다시 처음부터 시작하도록 하기 때문에, key() 메서드는 이전에 반환한 키를 기억하고 반환합니다.
따라서, NoRewindIterator의 key() 메서드는 현재 포인터 위치의 키를 반환하지만, rewind() 메서드를 호출하면 이전에 반환한 키를 반환합니다.
예를 들어, 다음과 같은 코드를 생각해 보세요.
#hostingforum.kr
php
$iterator = new ArrayIterator([1, 2, 3]);
$noRewindIterator = new NoRewindIterator($iterator);
$noRewindIterator->next();
echo $noRewindIterator->key(); // 출력: 1
$noRewindIterator->next();
echo $noRewindIterator->key(); // 출력: 1 (이전의 키를 반환)
$noRewindIterator->rewind();
echo $noRewindIterator->key(); // 출력: 0 (iterator가 처음부터 시작)
$noRewindIterator->next();
echo $noRewindIterator->key(); // 출력: 1 (현재 포인터 위치의 키를 반환)
2025-03-04 12:27