Maison >développement back-end >tutoriel php >Exemple d'utilisation d'un itérateur d'une interface prédéfinie PHP

Exemple d'utilisation d'un itérateur d'une interface prédéfinie PHP

coldplay.xixi
coldplay.xixiavant
2020-07-14 17:25:381949parcourir

Exemple d'utilisation d'un itérateur d'une interface prédéfinie PHP

L'exemple de cet article décrit l'utilisation de l'itérateur de l'interface prédéfinie PHP. Partagez-le avec tout le monde pour votre référence, comme suit :

Interface itérateur

Une interface qui peut itérer en interne via son propre itérateur ou classe externe.

Résumé de l'interface

Iterator extends Traversable {
    /* 方法 */
    abstract public current ( void ) : mixed
    abstract public key ( void ) : scalar
    abstract public next ( void ) : void
    abstract public rewind ( void ) : void
    abstract public valid ( void ) : bool
}

Exemple :

<?php
class myIterator implements Iterator
{
  private $position = 0;
  private $array = array(
    &#39;first_element&#39;,
    &#39;second_element&#39;,
    &#39;last_element&#39;,
  );

  /**
   * 重置键的位置
   */
  public function rewind(): void
  {
    var_dump(__METHOD__);
    $this->position = 0;
  }

  /**
   * 返回当前元素
   */
  public function current()
  {
    var_dump(__METHOD__);
    return $this->array[$this->position];
  }

  /**
   * 返回当前元素的键
   * @return int
   */
  public function key(): int
  {
    var_dump(__METHOD__);
    return $this->position;
  }

  /**
   * 将键移动到下一位
   */
  public function next(): void
  {
    var_dump(__METHOD__);
    ++$this->position;
  }

  /**
   * 判断键所在位置的元素是否存在
   * @return bool
   */
  public function valid(): bool
  {
    var_dump(__METHOD__);
    return isset($this->array[$this->position]);
  }
}

$it = new myIterator;

foreach ($it as $key => $value) {
  var_dump($key, $value);
  echo "\n";
}

Résultat de sortie :

chaîne 'myIterator::rewind' (longueur = 18 )
string 'myIterator::valid' (length=17)
string 'myIterator::current' (length=19)
string 'myIterator::key' (length=15)
int 0
string 'first_element' (length=13)
string 'myIterator::next' (length=16)
string 'myIterator::valid' (length=17)
string 'myIterator : :current' (length=19)
string 'myIterator::key' (length=15)
int 1
string 'second_element' (length=14)
string 'myIterator::next' (longueur=16)
chaîne 'myIterator::valid' (longueur=17)
chaîne 'myIterator::current' (longueur=19)
chaîne 'myIterator::key' (longueur=15)
int 2
chaîne 'last_element' (longueur=12)
chaîne 'myIterator::next' (longueur=16)
chaîne 'myIterator::valid' (longueur=17)

Les résultats montrent que lorsqu'une classe implémente l'interface Iterator et modifie l'ensemble de données de l'instance de classe, elle réinitialise d'abord la clé de l'ensemble de données, puis la recule progressivement, à chaque fois qu'elle renverra l'élément actuel et la clé actuelle.

Recommandations d'apprentissage associées : Programmation PHP de l'entrée à la maîtrise

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer