当前位置:首页 > 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. $myclass = new Myclass(); 
  6. //用foreach()将对象的属性循环出来 
  7. foreach($myclass as $key.'=>'.$val){ 
  8.   echo '$'.$key.' = '.$val."<br/>"
  9. /*返回 
  10.   $a = php 
  11.   $b = onethink 
  12.   $c = thinkphp 
  13. */ 

如果需要实现更加复杂的行为,可以通过一个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. class ObjectIterator implements MyIterator{ 
  15.   private $obj;//对象 
  16.   private $count;//数据元素的数量 
  17.   private $current;//当前指针 
  18.   function __construct($obj){ 
  19.     $this->obj = $obj
  20.     $this->count = count($this->obj->data); 
  21.   } 
  22.   function rewind(){ 
  23.     $this->current = 0; 
  24.   } 
  25.   function valid(){ 
  26.     return $this->current < $this->count
  27.   } 
  28.   function key(){ 
  29.     return $this->current; 
  30.   } 
  31.   function value(){ 
  32.     return $this->obj->data[$this->current]; 
  33.   } 
  34.   function next(){ 
  35.     $this->current++; 
  36.   } 
  37. interface MyAggregate{ 
  38.   //获取迭代器 
  39.   function getIterator(); 
  40. class MyObject implements MyAggregate{ 
  41.   public $data = array(); 
  42.   function __construct($in){ 
  43.     $this->data = $in
  44.   } 
  45.   function getIterator(){ 
  46.     return new ObjectIterator($this); 
  47.   } 
  48. //迭代器的用法 
  49. $arr = array(2,4,6,8,10); 
  50. $myobject = new MyObject($arr); 
  51. $myiterator = $myobject->getIterator(); 
  52. for($myiterator->rewind();$myiterator->valid();$myiterator->next()){ 
  53.   $key = $myiterator->key(); 
  54.   $value = $myiterator->value(); 
  55.   echo $key.'=>'.$value
  56.   echo "<br/>"
  57. /*返回 
  58.   0=>2 
  59.   1=>4 
  60.   2=>6 
  61.   3=>8 
  62.   4=>10 
  63. */

Tags: PHP迭代器 PHP迭代

分享到: