迭代器
在线手册:中文  英文

The FilterIterator class

(PHP 5 >= 5.1.0)

简介

This abstract iterator filters out unwanted values. This class should be extended to implement custom iterator filters. The FilterIterator::accept() must be implemented in the subclass.

类摘要

abstract FilterIterator extends IteratorIterator implements OuterIterator {
/* 方法 */
public abstract bool accept ( void )
public __construct ( Iterator $iterator )
public mixed current ( void )
public Iterator getInnerIterator ( void )
public mixed key ( void )
public void next ( void )
public void rewind ( void )
public bool valid ( void )
}

Table of Contents


迭代器
在线手册:中文  英文

用户评论:

Venelin Vulkov (2008-11-05 00:36:49)

The code below is a simple example of usage . Note that the method which does the actual job is accept. 

<?php
class UserFilter extends FilterIterator 
{
    private 
$userFilter;
    
    public function 
__construct(Iterator $iterator $filter )
    {
        
parent::__construct($iterator);
        
$this->userFilter $filter;
    }
    
    public function 
accept()
    {
        
$user $this->getInnerIterator()->current();
        if( 
strcasecmp($user['name'],$this->userFilter) == 0) {
            return 
false;
        }        
        return 
true;
    }
}

$array = array(
array(
'name' => 'Jonathan','id' => '5'),
array(
'name' => 'Abdul' ,'id' => '22')
);

$object = new ArrayObject($array);

// Note it is case insensitive check in our example due the usage of strcasecmp function
$iterator = new UserFilter($object->getIterator(),'abdul');

foreach (
$iterator as $result) {
    echo 
$result['name'];
}

/* Outputs Jonathan */

?>
Regards.

易百教程