
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!
Detaillierte Erläuterung der Verwendung des Netsh-Befehls
Zählt Hongmeng OS als Android?
Was bedeutet USB-Schnittstelle?
Pycharm-Methode zum Öffnen einer neuen Datei
Vorteile des Herunterladens der offiziellen Website der Yiou Exchange App
Warum kann das Video in ppt nicht abgespielt werden?
Ausfallzeit des Windows 10-Dienstes
WeChat konnte keine Daten laden