欢迎进入linux社区论坛,与200万技术人员互动交流 >>进入 下面我们来了解如何实现一个自定义的迭代器,然后再开始慢慢理解迭代器的内部工作原理。先来看一个官方的例子: ?php class myiterator implements iterator { private $position = 0; private $arra
欢迎进入linux社区论坛,与200万技术人员互动交流 >>进入
下面我们来了解如何实现一个自定义的迭代器,然后再开始慢慢理解迭代器的内部工作原理。先来看一个官方的例子:
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::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 - 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;
}
}
[1] [2]