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

PHP迭代器和迭代的实现与使用方法分析

发布:smiling 来源: PHP粉丝网  添加日期:2021-09-11 10:46:46 浏览: 评论:0 

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

本文实例讲述了PHP迭代器和迭代的实现与使用方法,分享给大家供大家参考,具体如下:

PHP的面向对象引擎提供了一个非常聪明的特性,就是,可以使用foreach()方法通过循环方式取出一个对象的所有属性,就像数组方式一样,代码如下:

  1. class Myclass{ 
  2.   public $a = 'php'; 
  3.   public $b = 'onethink'; 
  4.   public $c = 'thinkphp'; 
  5. } 
  6. $myclass = new Myclass(); 
  7. //用foreach()将对象的属性循环出来 
  8. foreach($myclass as $key.'=>'.$val){ 
  9.   echo '$'.$key.' = '.$val."<br/>"; 
  10. } 
  11. /*返回 
  12.   $a = php 
  13.   $b = onethink 
  14.   $c = thinkphp 
  15. */ 

如果需要实现更加复杂的行为,可以通过一个iterator(迭代器)来实现

  1. //迭代器接口 
  2. interface MyIterator{ 
  3.   //函数将内部指针设置回数据开始处 
  4.   function rewind(); 
  5.   //函数将判断数据指针的当前位置是否还存在更多数据 
  6.   function valid(); 
  7.   //函数将返回数据指针的值 
  8.   function key(); 
  9.   //函数将返回将返回当前数据指针的值 
  10.   function value(); 
  11.   //函数在数据中移动数据指针的位置 
  12.   function next(); 
  13. } 
  14. //迭代器类 
  15. class ObjectIterator implements MyIterator{ 
  16.   private $obj;//对象 
  17.   private $count;//数据元素的数量 
  18.   private $current;//当前指针 
  19.   function __construct($obj){ 
  20.     $this->obj = $obj; 
  21.     $this->count = count($this->obj->data); 
  22.   } 
  23.   function rewind(){ 
  24.     $this->current = 0; 
  25.   } 
  26.   function valid(){ 
  27.     return $this->current < $this->count; 
  28.   } 
  29.   function key(){ 
  30.     return $this->current; 
  31.   } 
  32.   function value(){ 
  33.     return $this->obj->data[$this->current]; 
  34.   } 
  35.   function next(){ 
  36.     $this->current++; 
  37.   } 
  38. } 
  39. interface MyAggregate{ 
  40.   //获取迭代器 
  41.   function getIterator(); 
  42. } 
  43. class MyObject implements MyAggregate{ 
  44.   public $data = array(); 
  45.   function __construct($in){ 
  46.     $this->data = $in; 
  47.   } 
  48.   function getIterator(){ 
  49.     return new ObjectIterator($this); 
  50.   } 
  51. } 
  52. //迭代器的用法 
  53. $arr = array(2,4,6,8,10); 
  54. $myobject = new MyObject($arr); 
  55. $myiterator = $myobject->getIterator(); 
  56. for($myiterator->rewind();$myiterator->valid();$myiterator->next()){ 
  57.   $key = $myiterator->key(); 
  58.   $value = $myiterator->value(); 
  59.   echo $key.'=>'.$value; 
  60.   echo "<br/>"; 
  61. } 
  62. /*返回 
  63.   0=>2 
  64.   1=>4 
  65.   2=>6 
  66.   3=>8 
  67.   4=>10 
  68. */

Tags: PHP迭代器 PHP迭代

分享到: