本站公告: 暂无公告....

PHP Iterator(迭代器)

PHP开发 兰亭楼 0评论 614浏览

PHP Iterator(迭代器),PHP数组一般地说是一个十分强大的对象容器。但我们仍然可以给他来点涡轮增压。把迭代器对象设想为一种数组的包装。我们要在这里试着完成的是为遍历数组和在如何创建对象上加入一点额外的控制去创建一个唯一的接口,最后去支持傻瓜式的读取。

接口摘要

Iterator extends Traversable {
/* 方法 */
    abstract public mixed current ( void )
    abstract public scalar key ( void )
    abstract public void next ( void )
    abstract public void rewind ( void )
    abstract public boolean valid ( void )
}
举个例子试试看
<?php
    class myIterator implements Iterator {
    private $position = 0;
    private $array = array(
    "firstelement",
    "secondelement",
    "lastelement",
);
public function __construct() {
    $this->position = 0;
    }
    function rewind() {
    var_dump(__METHOD__);
    $this->position = 0;
}
function current() {
var_dump(__METHOD__);
    return $this->array[$this->position];
}
function key() {
    var_dump(__METHOD__);
    return $this->position;
}
function next() {
    var_dump(__METHOD__);
    ++$this->position;
}
function valid() {
    var_dump(__METHOD__);
    return isset($this->array[$this->position]);
}
}
$it = new myIterator;
foreach($it as $key => $value) {
    var_dump($key, $value);
    echo "";
}
?>
输出结果如下:
string(18) "myIterator::rewind"
string(17) "myIterator::valid"
string(19) "myIterator::current"
string(15) "myIterator::key"
int(0)
string(12) "firstelement"
string(16) "myIterator::next"
string(17) "myIterator::valid"
string(19) "myIterator::current"
string(15) "myIterator::key"
int(1)
string(13) "secondelement"
string(16) "myIterator::next"
string(17) "myIterator::valid"
string(19) "myIterator::current"
string(15) "myIterator::key"
int(2)
string(11) "lastelement"
string(16) "myIterator::next"
string(17) "myIterator::valid"


转载请注明: 兰亭楼 » PHP Iterator(迭代器)

发表我的评论 换个身份
取消评论

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址