Home  >  Article  >  Backend Development  >  Analysis of the usage of PHP iterator interface Iterator

Analysis of the usage of PHP iterator interface Iterator

jacklove
jackloveOriginal
2018-07-04 17:48:221711browse

This article mainly introduces the usage of the PHP iterator interface Iterator, and analyzes the concept, function, definition and usage of the PHP iterator interface Iterator in the form of examples. Friends in need can refer to the examples of this article

Describes the usage of PHP iterator interface Iterator. Share it with everyone for your reference, the details are as follows:

The function of the PHP Iterator interface is to allow the object to iterate the internal data in its own way, so that it can be accessed cyclically. The summary of the Iterator interface is as follows:

Iterator extends Traversable {
  //返回当前索引游标指向的元素
  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 )
}

The following is a simple example to demonstrate the use of Iterator:

<?php
/**
 * 该类允许外部迭代自己内部私有属性$_test,并演示迭代过程
 *
 * @author 疯狂老司机
 */
class TestIterator implements Iterator {
  /*
   * 定义要进行迭代的数组
   */
  private $_test = array(&#39;dog&#39;, &#39;cat&#39;, &#39;pig&#39;);
  /*
   * 索引游标
   */
  private $_key = 0;
  /*
   * 执行步骤
   */
  private $_step = 0;
  /**
   * 将索引游标指向初始位置
   *
   * @see TestIterator::rewind()
   */
  public function rewind() {
    echo &#39;第&#39;.++$this->_step.&#39;步:执行 &#39;.__METHOD__.&#39;<br>&#39;;
    $this->_key = 0;
  }
  /**
   * 判断当前索引游标指向的元素是否设置
   *
   * @see TestIterator::valid()
   * @return bool
   */
  public function valid() {
    echo &#39;第&#39;.++$this->_step.&#39;步:执行 &#39;.__METHOD__.&#39;<br>&#39;;
    return isset($this->_test[$this->_key]);
  }
  /**
   * 将当前索引指向下一位置
   *
   * @see TestIterator::next()
   */
  public function next() {
    echo &#39;第&#39;.++$this->_step.&#39;步:执行 &#39;.__METHOD__.&#39;<br>&#39;;
    $this->_key++;
  }
  /**
   * 返回当前索引游标指向的元素的值
   *
   * @see TestIterator::current()
   * @return value
   */
  public function current() {
    echo &#39;第&#39;.++$this->_step.&#39;步:执行 &#39;.__METHOD__.&#39;<br>&#39;;
    return $this->_test[$this->_key];
  }
  /**
   * 返回当前索引值
   *
   * @return key
   * @see TestIterator::key()
   */
  public function key() {
    echo &#39;第&#39;.++$this->_step.&#39;步:执行 &#39;.__METHOD__.&#39;<br>&#39;;
    return $this->_key;
  }
}
$iterator = new TestIterator();
foreach($iterator as $key => $value){
  echo "输出索引为{$key}的元素".":$value".&#39;<br><br>&#39;;
}
?>

The above example will output :

第1步:执行 TestIterator::rewind
第2步:执行 TestIterator::valid
第3步:执行 TestIterator::current
第4步:执行 TestIterator::key
输出索引为0的元素:dog
第5步:执行 TestIterator::next
第6步:执行 TestIterator::valid
第7步:执行 TestIterator::current
第8步:执行 TestIterator::key
输出索引为1的元素:cat
第9步:执行 TestIterator::next
第10步:执行 TestIterator::valid
第11步:执行 TestIterator::current
第12步:执行 TestIterator::key
输出索引为2的元素:pig
第13步:执行 TestIterator::next
第14步:执行 TestIterator::valid

As can be seen from the above example, if valid returns false, the loop ends.

Articles you may be interested in:

Usage analysis of PHP aggregate iterator interface IteratorAggregate

Detailed usage analysis of PHP detection interface Traversable

PHP custom serialization interface Serializable usage analysis

Detailed explanation of how to use PHP's Opcache acceleration

The above is the detailed content of Analysis of the usage of PHP iterator interface Iterator. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn