您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息
三六零分类信息网 > 安顺分类信息网,免费分类信息发布

见见PHP迭代器的内部执行过程

2025/12/9 7:15:34发布27次查看
看看php迭代器的内部执行过程
下面我们来了解如何实现一个自定义的迭代器,然后再开始慢慢理解迭代器的内部工作原理。先来看一个官方的例子:
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) { echo '输出键值:'; var_dump($key, $value); //echo $key; echo \n;}
程序运行输出:
string(18) myiterator::rewindstring(17) myiterator::validstring(19) myiterator::currentstring(15) myiterator::key输出键值:int(0)string(13) first_elementstring(16) myiterator::nextstring(17) myiterator::validstring(19) myiterator::currentstring(15) myiterator::key输出键值:int(1)string(14) second_elementstring(16) myiterator::nextstring(17) myiterator::validstring(19) myiterator::currentstring(15) myiterator::key输出键值:int(2)string(12) last_elementstring(16) myiterator::nextstring(17) myiterator::valid
一般的迭代器内部需要下面的方法:
iterator::current — return the current element 返回当前元素iterator::key — return the key of the current element 返回当前元素的键iterator::next — move forward to next element 移向下一个元素iterator::rewind — rewind the iterator to the first element 重新回到第一个元素iterator::valid — checks if current position is valid 检查当前位置的有效性如果不是很清楚迭代器的内容工作流程,可以查看下面的迭代器对数组的遍历过程:
var = $array; } } public function rewind() { echo 倒回第一个元素\n; reset($this->var); } public function current() { $var = current($this->var); echo 当前元素: $var\n; return $var; } public function key() { $var = key($this->var); echo 当前元素的键: $var\n; return $var; } public function next() { $var = next($this->var); echo 移向下一个元素: $var\n; return $var; } public function valid() { $var = $this->current() !== false; echo 检查有效性: {$var}\n; return $var; }}$values = array(1,2,3);$it = new myiterator($values);foreach ($it as $k => $v) { print 此时键值对 -- key $k: value $v\n\n;}
程序运行结果:
倒回第一个元素当前元素: 1检查有效性: 1当前元素: 1当前元素的键: 0此时键值对 -- key 0: value 1移向下一个元素: 2当前元素: 2检查有效性: 1当前元素: 2当前元素的键: 1此时键值对 -- key 1: value 2移向下一个元素: 3当前元素: 3检查有效性: 1当前元素: 3当前元素的键: 2此时键值对 -- key 2: value 3移向下一个元素: 当前元素: 检查有效性:
现在就很清晰了吧?
安顺分类信息网,免费分类信息发布

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product