• 售前

  • 售后

热门帖子
入门百科

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

[复制链接]
俏蝶吹 显示全部楼层 发表于 2021-10-25 19:27:12 |阅读模式 打印 上一主题 下一主题
本文实例讲述了PHP迭代器和迭代的实现与利用方法。分享给各人供各人参考,具体如下:
PHP的面向对象引擎提供了一个非常智慧的特性,就是,可以利用
  1. 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. */
复制代码
如果必要实现更加复杂的行为,可以通过一个
  1. 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. */
复制代码
更多关于PHP相干内容感兴趣的读者可查看本站专题:《php面向对象程序计划入门教程》、《PHP数组(Array)操纵本事大全》、《PHP基本语法入门教程》、《PHP运算与运算符用法总结》、《php字符串(string)用法总结》、《php+mysql数据库操纵入门教程》及《php常见数据库操纵本事汇总》
希望本文所述对各人PHP程序计划有所资助。

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作