首页 - 技术 -  php迭代器的执行过程

php迭代器的执行过程

2023-09-18 20:01

要使用迭代器就要先实现Iterator接口,该接口有以下五个方法:

  • Iterator::current — 返回当前元素
  • Iterator::key — 返回当前元素的键
  • Iterator::next — 向前移动到下一个元素
  • Iterator::rewind — 返回到迭代器的第一个元素
  • Iterator::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('one','two','three');
$it = new MyIterator($values);foreach ($it as $k => $v) {print "此时键值对 -- key $k: value $v\n\n";
}

以下是程序执行结果:

倒回第一个元素
 当前元素: one
 检查有效性: 1
 当前元素: one
 当前元素的键: 0
 此时键值对 -- key 0: value one
  
 移向下一个元素: two
 当前元素: two
 检查有效性: 1
 当前元素: two
 当前元素的键: 1
 此时键值对 -- key 1: value two
  
 移向下一个元素: three
 当前元素: three
 检查有效性: 1
 当前元素: three
 当前元素的键: 2
 此时键值对 -- key 2: value three
  
 移向下一个元素:
 当前元素:
 检查有效性: 


从上面的结果中很容易看出foreach循环的时候都调用了那些方法了吧