博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
迭代器
阅读量:5970 次
发布时间:2019-06-19

本文共 1916 字,大约阅读时间需要 6 分钟。

什么是迭代器模式

定义:提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部显示

 

使用场景:

1.访问一个聚合对象内容而无须暴露它的内部显示

2.需要为聚合对象提供多种遍历方式

3.为遍历不同的聚合结构提供一个统一的接口

迭代器:类继承PHP的Iterator接口,批量操作。

1. 迭代器模式,在不需要了解内部实现的前提下,遍历一个聚合对象的内部元素。

2. 相比传统的编程模式,迭代器模式可以隐藏遍历元素的所需操作。

 

接口Iterator

current() 返回当前元素

key() 返回当前元素的键

next() 向前移动到下一个元素

rewind() 返回到迭代器的第一个元素

 

1 
list=$array;14 }15 /**16 * 将索引指定到首个元素17 * {@inheritDoc}18 * @see Iterator::rewind()19 */20 function rewind(){21 echo '第'.++$this->i.'步:执行 '.__METHOD__.'
';22 $this->valid=(false !==reset($this->list));23 }24 /**25 * 返回当前元素26 * {@inheritDoc}27 * @see Iterator::current()28 */29 function current(){30 echo '第'.++$this->i.'步:执行 '.__METHOD__.'
';31 return current($this->list);32 }33 /**34 * 索引指向下一个元素35 * {@inheritDoc}36 * @see Iterator::next()37 */38 function next(){39 echo '第'.++$this->i.'步:执行 '.__METHOD__.'
';40 $this->valid=(false !== next($this->list));41 }42 /**43 * 返回当前元素键值44 * {@inheritDoc}45 * @see Iterator::key()46 */47 function key(){48 echo '第'.++$this->i.'步:执行 '.__METHOD__.'
';49 return key($this->list);50 }51 /**52 * 判断下个是否有下个元素53 * {@inheritDoc}54 * @see Iterator::valid()55 */56 function valid(){57 echo '第'.++$this->i.'步:执行 '.__METHOD__.'
';58 return $this->valid;59 }60 }61 62 $list=array('name'=>'guoguo','pwd'=>'111111');63 $test=new Test($list);64 //foreach循环方式65 foreach ($test as $key=>$val){66 echo '输出索引为'.$key.'的元素值为:'.$val.'
';67 }68 69 echo '----------------结束分隔线-----------------------
';70 $second=new Test($list);71 //while循环方式72 $second->rewind();73 while($second->valid()){74 echo '输出索引为'.$second->key().'的元素值为:'.$second->current().'
';75 $second->next();76 }

 

转载于:https://www.cnblogs.com/BrokenHeart/p/10681306.html

你可能感兴趣的文章
通达信里的统计函数及区块背景函数
查看>>
redis主从配置<转>
查看>>
8 行 Node.js 代码实现代理服务器
查看>>
水印,图片验证码
查看>>
C#编程(七十六)----------使用指针实现基于栈的高性能数组
查看>>
Android 类库
查看>>
vue和iview应用中的一些问题(持续更新)
查看>>
基于 Workman 实现Web扫描登录
查看>>
karma如何与测试框架合作2之webpack
查看>>
关于VSCode更新对于emmet2.0支持的配置更改问题。
查看>>
10分钟搭建MySQL Binlog分析+可视化方案
查看>>
vmware虚拟机配置串口
查看>>
小型自动化运维--expect脚本之传递函数
查看>>
Nsrp实现juniper防火墙的高可用性【HA】!
查看>>
oracle11g 安装在rhel5.0笔记
查看>>
解决Lync 2013演示PPT提示证书问题的多种方法
查看>>
[转]经典正则表达式
查看>>
JDBC+Servlet+JSP整合开发之26.JSP内建对象
查看>>
【下载】深入oracle数据库专用虚拟机环境部署方案《VirtualBox+OELR5U7x86_64+Oracle11gR2》...
查看>>
值得推荐的C/C++开源框架和库
查看>>