
	                	                 
FilterIterator::next() 함수는 Iterator::next() 함수와 유사하지만, FilterIterator::next() 함수는 Iterator::next() 함수가 반환한 요소를 필터링하여 반환합니다. 
FilterIterator::next() 함수의 동작은 다음과 같습니다.
1. Iterator::next() 함수를 호출하여 다음 요소를 반환합니다.
2. 반환된 요소를 필터링하여, 필터링 조건을 충족하는 요소를 반환합니다.
3. 필터링 조건을 충족하지 않는 요소는 무시합니다.
예를 들어, 다음과 같은 FilterIterator 클래스가 있다고 가정해 보겠습니다.
#hostingforum.kr
php
class FilterIterator extends Iterator {
    private $filter;
    public function __construct(Iterator $iterator, callable $filter) {
        $this->iterator = $iterator;
        $this->filter = $filter;
    }
    public function current() {
        return $this->iterator->current();
    }
    public function next() {
        while ($this->iterator->valid()) {
            $item = $this->iterator->current();
            if ($this->filter($item)) {
                $this->iterator->next();
                return $item;
            }
            $this->iterator->next();
        }
        return null;
    }
}
이 FilterIterator 클래스는 Iterator::next() 함수를 호출하여 다음 요소를 반환한 후, 필터링 조건을 충족하는 요소를 반환합니다.
예를 들어, 다음과 같은 사용 예시가 있습니다.
#hostingforum.kr
php
$numbers = [1, 2, 3, 4, 5];
$evenNumbers = new FilterIterator(new ArrayIterator($numbers), function ($item) {
    return $item % 2 == 0;
});
foreach ($evenNumbers as $number) {
    echo $number . "n";
}
이 예시에서는 FilterIterator 클래스를 사용하여 짝수만 필터링하여 반환합니다.
FilterIterator::next() 함수는 Iterator::next() 함수보다 더 많은 작업을 수행하는 것처럼 보이지만, 필터링 조건을 충족하는 요소를 반환하는 데에만 사용됩니다.
2025-06-26 06:23