Iterator erweitert die abstrakte Schnittstelle Traversable. PHP bietet eine Reihe integrierter Iteratoren (sogenannte SPL-Iteratoren) für viele gängige Funktionen. Zum Beispiel ArrayIterator, DirectoryIterator usw. Benutzerklassen, die die Iterator-Schnittstelle implementieren, sollten die darin definierten abstrakten Methoden implementieren.
Iterator extends Traversable { /* Methods */ 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 }
Iterator::current – Gibt das aktuelle Element zurück.
Iterator::key – Gibt den Schlüssel des aktuellen Elements zurück.
Iterator::next – Geht zum nächsten Element.
Iterator::rewind – Wird iteriert. Iterator spult das erste Element zurück.
Iterator::valid – Prüft, ob die aktuelle Position gültig ist.
Bei der Implementierung der Schnittstellen IteratorAggregate oder Iterator müssen diese vor ihren Namen in der Klausel implements aufgeführt werden.
Im folgenden PHP-Skript enthält eine Klasse, die eine Schnittstelle implementiert, eine private Variable als Array. Durch die Implementierung der abstrakten Methode des Iterators können wir mithilfe der foreach-Schleife und der next()-Methode über das Array iterieren.
<?php class myIterator implements Iterator { private $index = 0; private $arr = array(10,20,30,40); public function __construct() { $this->index = 0; } public function rewind() { $this->index = 0; } public function current() { return $this->arr[$this->index]; } public function key() { return $this->index; } public function next() { ++$this->index; } public function valid() { return isset($this->arr[$this->index]); } } ?>
Mit einer foreachSchleife können wir über die Array-Eigenschaften eines MyIterator-Objekts iterieren.
$it = new myIterator(); foreach($it as $key => $value) { echo "$key=>". $value ."</p><p>"; }
Iteration kann auch durch Aufrufen der Methode next() in einer While-Schleife durchgeführt werden. Bevor Sie die Schleife starten, stellen Sie sicher, dass Sie den Iterator „zurückspulen“. Beispiel
$it->rewind(); do { echo $it->key() . "=>" .$it->current() . "</p><p>"; $it->next(); } while ($it->valid());
0=>10 1=>20 2=>30 3=>40
Das obige ist der detaillierte Inhalt vonPHP Iterierbare Schnittstelle. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!