您的位置:首页技术文章
文章详情页

PHP基础之预定义接口2——Iterator接口

浏览:61日期:2022-09-15 10:29:02

可在内部迭代自己的外部迭代器或类的接口。

接口摘要

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 已经提供了一些用于日常任务的迭代器,如SPL迭代器。

范例

Example #1 基本用法

这个例子展示了使用 foreach 时,迭代器方法的调用顺序。

<?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 'n'; }?>

以上例程的输出类似于:

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'方法列表Iterator::current — 返回当前元素Iterator::key — 返回当前元素的键Iterator::next — 向前移动到下一个元素Iterator::rewind — 返回到迭代器的第一个元素Iterator::valid — 检查当前位置是否有效

标签: PHP
相关文章: