Iterator 笔记

Iterator 

双向链表同样继承Iterator

  1. rewind() 重置指针,指到初始位置
  2. current() 返回当前指针value
  3. key() 返回当前key
  4. next() 将当前指针返回指向下一个
  5. valid() 判断当前是否存在 bool

ArrayIterator

foreach 循环自动转换成Iterator 形式

  1. seek($position) 跳转到某个元素开始遍历
  2. asort() value 排序
  3. ksort key 排序
  4. ....

AppendIterator

多个arrayIterator 合并成一个,array_merge() 函数类似(不太确定这个函数是否就是通过appendIterator 实现的,有空再看源码)

主要方法

  1. append($iterator) 附加iterator 

MultipleIterator

将多个iterator 合并

实例化参数

MultipleIterator::MIT_NEED_ANY  0  以最长的Iterator 为标准,没有的value 为空

MultipleIterator::MIT_NEED_ALL    1 以最短的Iterator 为标准

MultipleIterator::MIT_KEYS_NUMERIC  0  跟第一个一样

MultipleIterator::MIT_KEYS_ASSOC   长度标准跟MIT_NEED_ANY 一样 在attach的时候需要填写key 每个attach 的iterator 都有一个key

FilesystemIterator

获取路径下的文件 new FilesystemIterator($dir)

方法

  1. getMTime() 
  2. isDir()  
  3. getSize()
  4. getFileName()
  5. ..... 

OuterIterator

继承iterator 的对象接口

IteratorIterator

implement outerIterator 可以重定义 iterator 里面的方法,可以在iterator 的内置方法上做一层包装,例如 重定义 current()方法,在iterator 的current() 返回后,再做一层处理

RecursiveIteratorIterator

遍历多层迭代器,例如:RecursiveDirectoryIterator  遍历所有路径下所有文件,通过 hasChildren 跟 getChildren 获取文件夹的下一层 ,递归遍历目录下的所有文件


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值