当前位置:首页 > PHP教程 > php应用 > 列表

PHP迭代器接口Iterator用法分析

发布:smiling 来源: PHP粉丝网  添加日期:2021-08-25 21:46:29 浏览: 评论:0 

这篇文章主要介绍了PHP迭代器接口Iterator用法,结合实例形式分析了PHP迭代器接口Iterator的概念、功能、定义与使用方法,需要的朋友可以参考下。

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

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

  1. Iterator extends Traversable { 
  2.   //返回当前索引游标指向的元素 
  3.   abstract public mixed current ( void ) 
  4.   //返回当前索引游标指向的键 
  5.   abstract public scalar key ( void ) 
  6.   //移动当前索引游标到下一元素 
  7.   abstract public void next ( void ) 
  8.   //重置索引游标 
  9.   abstract public void rewind ( void ) 
  10.   //判断当前索引游标指向的元素是否有效 
  11.   abstract public boolean valid ( void ) 

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

  1. <?php 
  2. /** 
  3.  * 该类允许外部迭代自己内部私有属性$_test,并演示迭代过程 
  4.  * 
  5.  * @author 疯狂老司机 
  6.  */ 
  7. class TestIterator implements Iterator { 
  8.   /* 
  9.    * 定义要进行迭代的数组 
  10.    */ 
  11.   private $_test = array('dog''cat''pig'); 
  12.   /* 
  13.    * 索引游标 
  14.    */ 
  15.   private $_key = 0; 
  16.   /* 
  17.    * 执行步骤 
  18.    */ 
  19.   private $_step = 0; 
  20.   /** 
  21.    * 将索引游标指向初始位置 
  22.    * 
  23.    * @see TestIterator::rewind() 
  24.    */ 
  25.   public function rewind() { 
  26.     echo '第'.++$this->_step.'步:执行 '.__METHOD__.'<br>'
  27.     $this->_key = 0; 
  28.   } 
  29.   /** 
  30.    * 判断当前索引游标指向的元素是否设置 
  31.    * 
  32.    * @see TestIterator::valid() 
  33.    * @return bool 
  34.    */ 
  35.   public function valid() { 
  36.     echo '第'.++$this->_step.'步:执行 '.__METHOD__.'<br>'
  37.     return isset($this->_test[$this->_key]); 
  38.   } 
  39.   /** 
  40.    * 将当前索引指向下一位置 
  41.    * 
  42.    * @see TestIterator::next() 
  43.    */ 
  44.   public function next() { 
  45.     echo '第'.++$this->_step.'步:执行 '.__METHOD__.'<br>'
  46.     $this->_key++; 
  47.   } 
  48.   /** 
  49.    * 返回当前索引游标指向的元素的值 
  50.    * 
  51.    * @see TestIterator::current() 
  52.    * @return value 
  53.    */ 
  54.   public function current() { 
  55.     echo '第'.++$this->_step.'步:执行 '.__METHOD__.'<br>'
  56.     return $this->_test[$this->_key]; 
  57.   } 
  58.   /** 
  59.    * 返回当前索引值 
  60.    * 
  61.    * @return key 
  62.    * @see TestIterator::key() 
  63.    */ 
  64.   public function key() { 
  65.     echo '第'.++$this->_step.'步:执行 '.__METHOD__.'<br>'
  66.     return $this->_key; 
  67.   } 
  68. $iterator = new TestIterator(); 
  69. foreach($iterator as $key => $value){ 
  70.   echo "输出索引为{$key}的元素".":$value".'<br><br>'
  71. ?> 

以上例子将输出:

  1. 第1步:执行 TestIterator::rewind 
  2. 第2步:执行 TestIterator::valid 
  3. 第3步:执行 TestIterator::current 
  4. 第4步:执行 TestIterator::key 
  5. 输出索引为0的元素:dog 
  6. 第5步:执行 TestIterator::next 
  7. 第6步:执行 TestIterator::valid 
  8. 第7步:执行 TestIterator::current 
  9. 第8步:执行 TestIterator::key 
  10. 输出索引为1的元素:cat 
  11. 第9步:执行 TestIterator::next 
  12. 第10步:执行 TestIterator::valid 
  13. 第11步:执行 TestIterator::current 
  14. 第12步:执行 TestIterator::key 
  15. 输出索引为2的元素:pig 
  16. 第13步:执行 TestIterator::next 
  17. 第14步:执行 TestIterator::valid 

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

Tags: PHP迭代器 Iterator

分享到: