Maison >développement back-end >tutoriel php >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 :
Une interface qui peut itérer en interne via son propre itérateur ou classe externe.
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 }
<?php class myIterator implements Iterator { private $position = 0; private $array = array( 'first_element', 'second_element', 'last_element', ); /** * 重置键的位置 */ 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!