>  기사  >  php教程  >  看看PHP迭代器的内部执行过程

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

WBOY
WBOY원래의
2016-06-06 19:53:05978검색

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

欢迎进入Linux社区论坛,与200万技术人员互动交流 >>进入

  下面我们来了解如何实现一个自定义的迭代器,然后再开始慢慢理解迭代器的内部工作原理。先来看一个官方的例子:

  

  class myIterator implements Iterator {

  private $position = 0;

  private $array = array(

  "first_element",

  "second_element",

  "last_element",

  );

  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) {

  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 检查当前位置的有效性

  如果不是很清楚迭代器的内容工作流程,可以查看下面的迭代器对数组的遍历过程:

  

  /**

  * @author nicesunboy@gmail.com

  */

  class MyIterator implements Iterator

  {

  private $var = array();

  public function __construct($array)

  {

  if (is_array($array)) {

  $this->var = $array;

  }

  }

[1] [2] 

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

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.