PHP SPL标准库-迭代器
时间:2019-03-20
本文章向大家介绍PHP SPL标准库-迭代器,主要包括PHP SPL标准库-迭代器使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
通过某种统一的方式遍历链表或者数组中的元素的过程叫做迭代遍历,这种统一的遍历工具我们叫做迭代器。
PHP中迭代器是通过Iterator 接口定义的。
ArrayIterator迭代器
foreach 默认实现了ArrayIterator接口,但是通过这个迭代器,可以实现更加高级的功能。
- seek(),指针定位到某位置,跳过前面 n-1的元素
- ksort(),对key进行字典序排序
- asort(),对值进行字典序排序
$arr=array( 'apple' => 'apple value', // position = 0 'orange' => 'orange value', // position = 1 'grape' => 'grape value', 'plum' => 'plum value' ); $obj=new ArrayObject($arr); // 生成数组的迭代器 $it =$obj->getIterator(); foreach ($it as $key => $value){ echo $key . ":". $value .'<br />'; } echo '<br />'; // 实现和foreach同样功能 $it->rewind(); // 调用current之前一定要调用rewind While($it->valid()){ // 判断当前是否为有效数据 echo $it->key().' : '.$it->current().'<br />'; $it->next(); // 千万不能少 } // 实现更复杂功能,跳过某些元素进行打印 $it->rewind(); if ($it->valid()){ $it->seek(1); // position,跳过前面 n-1的元素 While($it->valid()){// 判断当前是否为有效数据 echo $it->key().' : '.$it->current().'<br />'; $it->next(); // 千万不能少 } } $it->ksort(); // 对key进行字典序排序 //$it->asort(); // 对值进行字典序排序 foreach ($it as $key => $value){ echo $key . ":". $value .'<br />'; }
返回结果:
apple:apple value orange:orange value grape:grape value plum:plum value apple : apple value orange : orange value grape : grape value plum : plum value orange : orange value grape : grape value plum : plum value apple:apple value grape:grape value orange:orange value plum:plum value
AppendIterator迭代器
AppendIterator能陆续遍历几个迭代器,按顺序迭代访问几个不同的迭代器。例如希望在一次循环中迭代访问两个或更多的组合
$arr_a = new ArrayIterator(array('a'=> array('a','b'=>234),'b','c')); $arr_b = new ArrayIterator(array('d','e','f')); $it = new AppendIterator(); $it->append($arr_a); // 追加数组 $it->append($arr_b); // 追加数组,然后遍历$it foreach ($it as $key => $value){ print_r($key); echo '-'; print_r($value); echo '<br />---------------<br />'; }
返回结果:
a-Array ( [0] => a [b] => 234 ) --------------- 0-b --------------- 1-c --------------- 0-d --------------- 1-e --------------- 2-f ---------------
MultipleIterator迭代器
用于把多个Iterator 里面的数据组合成为一个整体来访问
- Multipleiterator:将多个arrayiterator拼凑起来
- Appenditerator:将多个arrayiteratorr连接起来
$idIter = new ArrayIterator(array('01','02','03')); $nameIter = new ArrayIterator(array('张三','李四','王五')); $ageIter = new ArrayIterator(array('22','23','25')); $mit = new MultipleIterator(MultipleIterator::MIT_KEYS_ASSOC); // 按照key关联 $mit->attachIterator($idIter,"ID"); $mit->attachIterator($nameIter,"NAME"); $mit->attachIterator($ageIter,"AGE"); foreach ($mit as $value){ print_r($value); }
返回结果:
Array ( [ID] => 01 [NAME] => 张三 [AGE] => 22 ) Array ( [ID] => 02 [NAME] => 李四 [AGE] => 23 ) Array ( [ID] => 03 [NAME] => 王五 [AGE] => 25 )
- hdu---(Tell me the area)(几何/三角形面积以及圆面积的一些知识)
- MySQL数据库(六):体系结构和存储引擎
- hdu----(2222)Keywords Search(trie树)
- MySQL数据库(七):数据导出与导入
- flume与kafka整合高可靠教程
- Oracle 12c系列(一)|多租户容器数据库
- Spring Security入门(三):密码加密
- MySQL数据库(八):表记录的基本操作(增删改查)
- flume应该思考的问题
- 利用Go语言实现简单Ping过程的方法
- MySQL数据库(九):修改表结构
- Go语言中反射的正确使用
- spark零基础学习线路指导
- MySQL数据库(十):用户授权与撤销授权
- php概述
- php教程
- php环境搭建
- PHP书写格式
- php变量
- php常量
- PHP注释
- php数组
- php字符串 string
- PHP整型 integer
- PHP浮点型 float
- php布尔型
- php数据类型之数组
- php数据类型之对象
- php数据类型之null
- php数据类型之间的转换
- php运算符
- php表达式
- PHP循环控制
- PHP流程控制
- php函数
- php全局变量
- PHP魔术变量
- php命名空间
- php 日期
- PHP包含文件
- php文件
- PHP 文件上传
- php Cookies
- php Sessions
- php email
- php安全email
- php错误处理
- PHP异常处理
- php过滤器
- PHP 高级过滤器
- php json
- php 表单
- PHP MySQL 简介
- PHP 连接 MySQL
- php创建数据库
- php 创建表
- php mysq 插入数据
- PHP MySQL 插入多条数据
- PHP MySQL 预处理语句
- php mysql 读取数据
- php mysql where
- PHP MySQL Order By
- PHP MySQL Update
- PHP MySQL Delete
- php ODBC