首页 > 程序开发 > PHP > PHP Iterator(迭代器)
2014
11-05

PHP Iterator(迭代器)

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

<?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;
	}
	
	public function rewind() {
		var_dump(__METHOD__);
		$this->position = 0;
	}
	public function current() {
		var_dump(__METHOD__);
		return $this->array[$this->position];
	}
	public function key() {
		var_dump(__METHOD__);
		return $this->position;
	}
	public function next() {
		var_dump(__METHOD__);
		++$this->position;
	}
	public function valid() {
		var_dump(__METHOD__);
		return isset($this->array[$this->position]);
	}
}

$it = new myIterator;
foreach($it as $key => $value) {
	echo '<pre>';
	var_dump($key, $value);
	echo '</pre>';
}
?>
//输出结果如下:
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"
最后编辑日期:
作者:uuling
这个作者貌似有点懒,什么都没有留下。

留下一个回复

你的email不会被公开。