介绍
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 — 移动到下一个元素
立即学习“PHP免费学习笔记(深入)”;
Iterator::rewind — 将迭代器倒回第一个元素
Iterator::valid — 检查当前位置是否有效
在实现 IteratorAggregate 或 Iterator 接口时,必须在 implements 子句中将它们列在其名称之前。
迭代器示例
在下面的PHP脚本中,一个实现了接口的类包含一个私有变量作为数组。通过实现迭代器的抽象方法,我们可以使用 foreach 循环和 next() 方法遍历数组。
示例
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接口的详细内容,更多请关注【创想鸟】其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。
发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/1794560.html