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

coldplay.xixi
Libérer: 2023-04-09 08:06:01
avant
1907 Les gens l'ont consulté

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
}
Copier après la connexion

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";
}
Copier après la connexion

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!

Étiquettes associées:
source:jb51.net
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal