class MyIterator implements Iterator{
protected $position;
protected $arr;
public function __construct($array){
$this->arr = $array;
$this->postion = 0;
}
public function rewind(){
var_dump(__METHOD__);
$this->position = 0;
}
public function valid(){
var_dump(__METHOD__);
return isset($this->arr[$this->position]);
}
public function key(){
var_dump(__METHOD__);
return $this->position;
}
public function current(){
var_dump(__METHOD__);
return $this->arr[$this->position];
}
public function next(){
var_dump(__METHOD__);
return ++$this->position;
}
}
例子:
$array = array(1,2,3,3,4);
$it = new MyIterator($array);
foreach($it as $key=>$value){
echo $key.':'.$value.'<br/>';
}
使用iteratoraggregate :
class MyIteratorAggregate implements IteratorAggregate{
protected $arr;
public function __construct($array){
$this->arr = $array;
}
public function getIterator(){
return new MyIterator($this->arr);
}
}
例子:
$array = array(1,2,3,3,4);
$it = new MyIteratorAggregate($array);
foreach($it as $key=>$value){
echo $key.':'.$value.'<br/>';
}
对于PHP其他的那些迭代器,实在多不胜数,我反反复复查询官网的手册,终于整理出大体的结构草图,在这里分享给各位吧。
![PHP 迭代器 - Perlt - Perlt s Blog](http://img535.ph.126.net/bIrRheDI-GiTIxOxfzLovg==/1291970143103004900.jpg)