PHP Iterable接口

介绍
Iterator 接口扩展了抽象的Traversable接口。PHP提供了许多内置的迭代器(称为SPL迭代器)用于许多常见功能。例如ArrayIterator,DirectoryIterator等。实现Iterator接口的用户类应该实现其中定义的抽象方法。
语法
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() 方法遍历数组。
示例
<?php
class 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=>10 1=>20 2=>30 3=>40
以上就是PHP Iterable接口的详细内容,更多请关注其它相关文章!
Php