php iterator接口,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倒退到第一个元素

Iterator::valid —检查当前位置是否有效

当实现扩展Traversable的IteratorAggregate或Iterator接口时,必须在Implements子句中在其名称之前列出它们。

迭代器示例

在下面的PHP脚本中,实现Interface的类包含一个数组作为私有变量。实现Iterator的抽象方法,我们可以使用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对象的array属性$it = new myIterator();

foreach($it as $key => $value) {

echo "$key=>". $value ."\n";

}

还可以通过在while循环中附加next()方法来执行迭代。确保在开始循环之前倒回迭代器

示例$it->rewind();

do {

echo $it->key() . "=>" .$it->current() . "\n";

$it->next();

}

while ($it->valid());

输出结果

在两种情况下,遍历数组属性都显示以下结果0=>10

1=>20

2=>30

3=>40

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值