博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PHP遍历接口Iterator详解
阅读量:6898 次
发布时间:2019-06-27

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

从手册中查到的解释是:

Iterator extends Traversable {/* Methods */abstract public mixed current ( void )abstract public scalar key ( void )abstract public void next ( void )abstract public void rewind ( void )abstract public boolean valid ( void )}

当一个实现了Iterator接口的对象,被foreach遍历时,会自动调用这些方法。调用的循序是:

rewind() -> valid() -> current() -> key() -> next()

下面来看一下简单的代码:

class myIterator implements Iterator {      private $position = 0;      private $array = array(          "firstelement",          "secondelement",          "lastelement",      );          public function __construct() {          $this->position = 0;      }        function rewind() {          var_dump(__METHOD__);          $this->position = 0;      }        function current() {          var_dump(__METHOD__);          return $this->array[$this->position];      }        function key() {          var_dump(__METHOD__);          return $this->position;      }        function next() {          var_dump(__METHOD__);          ++$this->position;      }        function valid() {          var_dump(__METHOD__);          return isset($this->array[$this->position]);      }  }    $it = new myIterator;    foreach($it as $key => $value) {      var_dump($key, $value);      echo '---------------------------'."\n";}

以上会输出:

/Users/thanatos/Web/study/blean.php:15:string 'myIterator::rewind' (length=18)/Users/thanatos/Web/study/blean.php:35:string 'myIterator::valid' (length=17)/Users/thanatos/Web/study/blean.php:20:string 'myIterator::current' (length=19)/Users/thanatos/Web/study/blean.php:25:string 'myIterator::key' (length=15)/Users/thanatos/Web/study/blean.php:43:int 0/Users/thanatos/Web/study/blean.php:43:string 'firstelement' (length=12)---------------------------/Users/thanatos/Web/study/blean.php:30:string 'myIterator::next' (length=16)/Users/thanatos/Web/study/blean.php:35:string 'myIterator::valid' (length=17)/Users/thanatos/Web/study/blean.php:20:string 'myIterator::current' (length=19)/Users/thanatos/Web/study/blean.php:25:string 'myIterator::key' (length=15)/Users/thanatos/Web/study/blean.php:43:int 1/Users/thanatos/Web/study/blean.php:43:string 'secondelement' (length=13)---------------------------/Users/thanatos/Web/study/blean.php:30:string 'myIterator::next' (length=16)/Users/thanatos/Web/study/blean.php:35:string 'myIterator::valid' (length=17)/Users/thanatos/Web/study/blean.php:20:string 'myIterator::current' (length=19)/Users/thanatos/Web/study/blean.php:25:string 'myIterator::key' (length=15)/Users/thanatos/Web/study/blean.php:43:int 2/Users/thanatos/Web/study/blean.php:43:string 'lastelement' (length=11)---------------------------/Users/thanatos/Web/study/blean.php:30:string 'myIterator::next' (length=16)/Users/thanatos/Web/study/blean.php:35:string 'myIterator::valid' (length=17)

转载地址:http://vbcdl.baihongyu.com/

你可能感兴趣的文章
Ext.Net学习笔记23:Ext.Net TabPanel用法详解
查看>>
hadoop集群监控工具ambari安装
查看>>
DNS劫持
查看>>
表单批量添加
查看>>
Python补充06 Python之道
查看>>
利用手上的UI资源(附免费UI工具包)
查看>>
Windows 7 无密码文件共享
查看>>
Sql server之sql注入篇
查看>>
CSS基本知识2-CSS选择
查看>>
Android中应用程序如何获得系统签名权限
查看>>
胖子哥的大数据之路(11)-我看Intel&&Cloudera的合作
查看>>
一个提供jsp免费空间的站点
查看>>
2014Esri全球用户大会之标准和互操作
查看>>
[歪谈]“走形式”的会议要不要滚粗
查看>>
wordpress表结构
查看>>
关于删除 hao123 主页设置的一点经验
查看>>
快速排序
查看>>
浅析Java虚拟机结构与机制[转]
查看>>
具体解释Android中AsyncTask的使用
查看>>
谷歌“信息安全公主”:我是一名好黑客
查看>>