PHP迭代器的内部执行过程详解
classmyIteratorimplementsIterator{
private$position=0;
private$array=array(
"first_element",
"second_element",
"last_element",
);
publicfunction__construct(){
$this->position=0;
}
functionrewind(){
var_dump(__METHOD__);
$this->position=0;
}
functioncurrent(){
var_dump(__METHOD__);
return$this->array[$this->position];
}
functionkey(){
var_dump(__METHOD__);
return$this->position;
}
functionnext(){
var_dump(__METHOD__);
++$this->position;
}
functionvalid(){
var_dump(__METHOD__);
returnisset($this->array[$this->position]);
}
}
$it=newmyIterator;
foreach($itas$key=>$value){
echo"输出键值:";
var_dump($key,$value);
//echo$key;
echo"\n";
}
程序运行输出:
string(18)"myIterator::rewind"
string(17)"myIterator::valid"
string(19)"myIterator::current"
string(15)"myIterator::key"
输出键值:int(0)
string(13)"first_element"
string(16)"myIterator::next"
string(17)"myIterator::valid"
string(19)"myIterator::current"
string(15)"myIterator::key"
输出键值:int(1)
string(14)"second_element"
string(16)"myIterator::next"
string(17)"myIterator::valid"
string(19)"myIterator::current"
string(15)"myIterator::key"
输出键值:int(2)
string(12)"last_element"
string(16)"myIterator::next"
string(17)"myIterator::valid"
一般的迭代器内部需要下面的方法:
Iterator::current—Returnthecurrentelement返回当前元素
Iterator::key—Returnthekeyofthecurrentelement返回当前元素的键
Iterator::next—Moveforwardtonextelement移向下一个元素
Iterator::rewind—RewindtheIteratortothefirstelement重新回到第一个元素
Iterator::valid—Checksifcurrentpositionisvalid检查当前位置的有效性
如果不是很清楚迭代器的内容工作流程,可以查看下面的迭代器对数组的遍历过程:
/**
*@author简明现代魔法http://www.nowamagic.net
*/
classMyIteratorimplementsIterator
{
private$var=array();
publicfunction__construct($array)
{
if(is_array($array)){
$this->var=$array;
}
}
publicfunctionrewind(){
echo"倒回第一个元素\n";
reset($this->var);
}
publicfunctioncurrent(){
$var=current($this->var);
echo"当前元素:$var\n";
return$var;
}
publicfunctionkey(){
$var=key($this->var);
echo"当前元素的键:$var\n";
return$var;
}
publicfunctionnext(){
$var=next($this->var);
echo"移向下一个元素:$var\n";
return$var;
}
publicfunctionvalid(){
$var=$this->current()!==false;
echo"检查有效性:{$var}\n";
return$var;
}
}
$values=array(1,2,3);
$it=newMyIterator($values);
foreach($itas$k=>$v){
print"此时键值对--key$k:value$v\n\n";
}
程序运行结果:
倒回第一个元素
当前元素:1
检查有效性:1
当前元素:1
当前元素的键:0
此时键值对--key0:value1
移向下一个元素:2
当前元素:2
检查有效性:1
当前元素:2
当前元素的键:1
此时键值对--key1:value2
移向下一个元素:3
当前元素:3
检查有效性:1
当前元素:3
当前元素的键:2
此时键值对--key2:value3
移向下一个元素:
当前元素:
检查有效性:
现在就很清晰了吧?
相关文章
- 【说站】php八大数据类型
- PHP 获取图片中的信息
- PHP_cURL初始化和执行方法
- C++/Php/Python 语言执行shell命令详解编程语言
- php在linux系统中的安装指南(phplinux安装)
- 客户端断开链接以后 PHP执行过程实测详解编程语言
- PHP程序在Linux上的运行(php与linux)
- 实现PHP程序Redis连接池的简单方法(redis连接池php)
- 行PHP MySQL命令行:提升效率的神秘奇迹(phpmysql命令)
- PHP如何准确获取MySQL数据库中的错误信息?(php获取mysql错误)
- 如何在Linux上架设PHP? 25字(linux架设php)
- PHP编译Redis:提升网站性能的利器(php编译redis)
- PHP操作MSSQL——实现高效读写(php读写mssql)
- PHP与MSSQL结合,提高数据查询效率(php能连mssql)
- PHP与MSSQL搭配实现高效多用户并发访问(php mssql并发)
- 提升PHP执行速度全攻略
- 一个自定义位数的php多用户计数器代码
- 让PHP以ROOT权限执行系统命令的方法
- PHP和Mysqlweb应用开发核心技术第1部分Php基础-1开始了解php
- PHP上传文件时文件过大$_FILES为空的解决方法
- PHP获取php,mysql,apche的版本信息示例代码
- 简单实用的网站PHP缓存类实例
- php读取csv数据保存到数组的方法