라이브러리

[PHP] CallbackFilterIterator::accept - 현재 값, 현재 키 및 내부 반복자를 인수로 사용하여 콜백을 호출합니다.




CallbackFilterIterator::accept


CallbackFilterIterator는 PHP의 SPL(Split-Purpose Library) 모듈의 일부로, FilterIterator를 상속받은 클래스입니다. 이 클래스는 Iterator를 필터링하는 데 사용되며, accept 메서드를 통해 필터링을 수행합니다.

accept 메서드는 Iterator의 현재 항목을 필터링하는 데 사용됩니다. 이 메서드는 boolean 값을 반환하며, true이면 현재 항목을 필터링한 후 Iterator의 다음 항목을 반환하고, false이면 Iterator의 현재 항목을 필터링한 후 Iterator의 이전 항목으로 돌아갑니다.

예제


다음 예제는 CallbackFilterIterator를 사용하여 숫자 1부터 10까지의 Iterator에서 짝수만 필터링하는 방법을 보여줍니다.

#hostingforum.kr
php

function isEven($value) {

    return $value % 2 == 0;

}



$numbers = new ArrayIterator(range(1, 10));

$evenNumbers = new CallbackFilterIterator($numbers, 'isEven');



foreach ($evenNumbers as $number) {

    echo "$number
";

}



이 예제에서, ArrayIterator는 1부터 10까지의 숫자를 Iterator로 생성합니다. CallbackFilterIterator는 이 Iterator를 필터링하여 짝수만 남깁니다. foreach 문을 사용하여 필터링된 Iterator를 반복하면, 짝수만 출력됩니다.

예제 2


다음 예제는 CallbackFilterIterator를 사용하여 객체의 속성을 필터링하는 방법을 보여줍니다.

#hostingforum.kr
php

class Person {

    public $name;

    public $age;



    function __construct($name, $age) {

        $this->name = $name;

        $this->age = $age;

    }

}



$people = [

    new Person('John', 25),

    new Person('Jane', 30),

    new Person('Bob', 35),

];



$filteredPeople = new CallbackFilterIterator(new ArrayIterator($people), function ($person) {

    return $person->age > 30;

});



foreach ($filteredPeople as $person) {

    echo "$person->name ($person->age)
";

}



이 예제에서, ArrayIterator는 Person 객체의 배열을 Iterator로 생성합니다. CallbackFilterIterator는 이 Iterator를 필터링하여 30세 이상의 사람만 남깁니다. foreach 문을 사용하여 필터링된 Iterator를 반복하면, 30세 이상의 사람만 출력됩니다.

결론


CallbackFilterIterator::accept 메서드는 Iterator의 현재 항목을 필터링하는 데 사용됩니다. 이 메서드는 boolean 값을 반환하며, true이면 현재 항목을 필터링한 후 Iterator의 다음 항목을 반환하고, false이면 Iterator의 현재 항목을 필터링한 후 Iterator의 이전 항목으로 돌아갑니다. CallbackFilterIterator를 사용하여 Iterator를 필터링하는 방법을 보여준 예제를 통해, 이 메서드의 사용법을 이해할 수 있습니다.
  • profile_image
    나우호스팅 @pcs8404 

    호스팅포럼 화이팅!

    댓글목록

    등록된 댓글이 없습니다.

  • 전체 8,985건 / 589 페이지

검색

게시물 검색