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

PHP预定义接口——Iterator用法示例

发布:smiling 来源: PHP粉丝网  添加日期:2022-03-13 10:54:35 浏览: 评论:0 

本文实例讲述了PHP预定义接口——Iterator用法,分享给大家供大家参考,具体如下:

Iterator(迭代器)接口

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

接口摘要

  1. Iterator extends Traversable { 
  2.     /* 方法 */ 
  3.     abstract public current ( void ) : mixed 
  4.     abstract public key ( void ) : scalar 
  5.     abstract public next ( void ) : void 
  6.     abstract public rewind ( void ) : void 
  7.     abstract public valid ( void ) : bool 

例:

  1. <?php 
  2. class myIterator implements Iterator 
  3.   private $position = 0; 
  4.   private $array = array
  5.     'first_element'
  6.     'second_element'
  7.     'last_element'
  8.   ); 
  9.  
  10.   /** 
  11.    * 重置键的位置 
  12.    */ 
  13.   public function rewind(): void 
  14.   { 
  15.     var_dump(__METHOD__); 
  16.     $this->position = 0; 
  17.   } 
  18.  
  19.   /** 
  20.    * 返回当前元素 
  21.    */ 
  22.   public function current() 
  23.   { 
  24.     var_dump(__METHOD__); 
  25.     return $this->array[$this->position]; 
  26.   } 
  27.  
  28.   /** 
  29.    * 返回当前元素的键 
  30.    * @return int 
  31.    */ 
  32.   public function key(): int 
  33.   { 
  34.     var_dump(__METHOD__); 
  35.     return $this->position; 
  36.   } 
  37.  
  38.   /** 
  39.    * 将键移动到下一位 
  40.    */ 
  41.   public function next(): void 
  42.   { 
  43.     var_dump(__METHOD__); 
  44.     ++$this->position; 
  45.   } 
  46.  
  47.   /** 
  48.    * 判断键所在位置的元素是否存在 
  49.    * @return bool 
  50.    */ 
  51.   public function valid(): bool 
  52.   { 
  53.     var_dump(__METHOD__); 
  54.     return isset($this->array[$this->position]); 
  55.   } 
  56.  
  57. $it = new myIterator; 
  58.  
  59. foreach ($it as $key => $value) { 
  60.   var_dump($key$value); 
  61.   echo "\n"

输出结果:

  1. string 'myIterator::rewind' (length=18) 
  2. string 'myIterator::valid' (length=17) 
  3. string 'myIterator::current' (length=19) 
  4. string 'myIterator::key' (length=15) 
  5. int 0 
  6. string 'first_element' (length=13) 
  7. string 'myIterator::next' (length=16) 
  8. string 'myIterator::valid' (length=17) 
  9. string 'myIterator::current' (length=19) 
  10. string 'myIterator::key' (length=15) 
  11. int 1 
  12. string 'second_element' (length=14) 
  13. string 'myIterator::next' (length=16) 
  14. string 'myIterator::valid' (length=17) 
  15. string 'myIterator::current' (length=19) 
  16. string 'myIterator::key' (length=15) 
  17. int 2 
  18. string 'last_element' (length=12) 
  19. string 'myIterator::next' (length=16) 
  20. string 'myIterator::valid' (length=17) 

由结果可知,当类实现了Iterator接口,实现改类实例数据集的时候首先会将数据集的键重置,然后逐步后移,每次都会进行然后返回当前元素以及当前键。

Tags: PHP预定义接口 Iterator

分享到: