php迭代器作用,PHP迭代器接口Iterator用法分析

本文实例讲述了PHP迭代器接口Iterator用法。分享给大家供大家参考,具体如下:

PHP Iterator接口的作用是允许对象以自己的方式迭代内部的数据,从而使它可以被循环访问,Iterator接口摘要如下:

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 )

}

下面是一个简单的例子演示Iterator的使用方法:

/**

* 该类允许外部迭代自己内部私有属性$_test,并演示迭代过程

*

* @author 疯狂老司机

*/

class TestIterator implements Iterator {

/*

* 定义要进行迭代的数组

*/

private $_test = array('dog', 'cat', 'pig');

/*

* 索引游标

*/

private $_key = 0;

/*

* 执行步骤

*/

private $_step = 0;

/**

* 将索引游标指向初始位置

*

* @see TestIterator::rewind()

*/

public function rewind() {

echo '第'.++$this->_step.'步:执行 '.__METHOD__.'
';

$this->_key = 0;

}

/**

* 判断当前索引游标指向的元素是否设置

*

* @see TestIterator::valid()

* @return bool

*/

public function valid() {

echo '第'.++$this->_step.'步:执行 '.__METHOD__.'
';

return isset($this->_test[$this->_key]);

}

/**

* 将当前索引指向下一位置

*

* @see TestIterator::next()

*/

public function next() {

echo '第'.++$this->_step.'步:执行 '.__METHOD__.'
';

$this->_key++;

}

/**

* 返回当前索引游标指向的元素的值

*

* @see TestIterator::current()

* @return value

*/

public function current() {

echo '第'.++$this->_step.'步:执行 '.__METHOD__.'
';

return $this->_test[$this->_key];

}

/**

* 返回当前索引值

*

* @return key

* @see TestIterator::key()

*/

public function key() {

echo '第'.++$this->_step.'步:执行 '.__METHOD__.'
';

return $this->_key;

}

}

$iterator = new TestIterator();

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

echo "输出索引为{$key}的元素".":$value".'
';

}

?>

以上例子将输出:

第1步:执行 TestIterator::rewind

第2步:执行 TestIterator::valid

第3步:执行 TestIterator::current

第4步:执行 TestIterator::key

输出索引为0的元素:dog

第5步:执行 TestIterator::next

第6步:执行 TestIterator::valid

第7步:执行 TestIterator::current

第8步:执行 TestIterator::key

输出索引为1的元素:cat

第9步:执行 TestIterator::next

第10步:执行 TestIterator::valid

第11步:执行 TestIterator::current

第12步:执行 TestIterator::key

输出索引为2的元素:pig

第13步:执行 TestIterator::next

第14步:执行 TestIterator::valid

从以上例子可以看出,如果执行valid返回false,则循环就此结束。

更多关于PHP相关内容感兴趣的读者可查看本站专题:《php面向对象程序设计入门教程》、《PHP数组(Array)操作技巧大全》、《PHP基本语法入门教程》、《PHP运算与运算符用法总结》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

希望本文所述对大家PHP程序设计有所帮助。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值