语法iterator extends traversable { /* methods */ abstract public current ( void ) : mixed abstract public key ( void ) : scalar abstract public next ( void ) : void abstract public rewind ( void ) : void abstract public valid ( void ) : bool}
方法iterator::current — 返回当前元素
iterator::key — 返回当前元素的键
iterator::next — 移动到下一个元素
iterator::rewind — 将迭代器倒回第一个元素
iterator::valid — 检查当前位置是否有效
在实现 iteratoraggregate 或 iterator 接口时,必须在 implements 子句中将它们列在其名称之前。
迭代器示例在下面的php脚本中,一个实现了接口的类包含一个私有变量作为数组。通过实现迭代器的抽象方法,我们可以使用 foreach 循环和 next() 方法遍历数组。
示例<?phpclass myiterator implements iterator { private $index = 0; private $arr = array(10,20,30,40); public function __construct() { $this->index = 0; } public function rewind() { $this->index = 0; } public function current() { return $this->arr[$this->index]; } public function key() { return $this->index; } public function next() { ++$this->index; } public function valid() { return isset($this->arr[$this->index]); }}?>
使用foreach循环,我们可以迭代myiterator对象的数组属性
$it = new myiterator();foreach($it as $key => $value) { echo "$key=>". $value ."
";}
迭代也可以通过在while循环中调用next()方法来执行。在开始循环之前,请确保rewind迭代器。
示例$it->rewind();do { echo $it->key() . "=>" .$it->current() . "
"; $it->next();}while ($it->valid());
输出在两种情况下,对数组属性的遍历显示以下结果
0=>101=>202=>303=>40
以上就是php iterable接口的详细内容。
