Funktionsprinzip
1. Führen Sie vor der ersten Iteration die Methode iterator::rewind() aus.
Wird nur einmal ausgeführt und gibt das erste Element des Iterators zurück, aber die Methode hat keinen Rückgabewert
2. Überprüfen Sie, ob das erste Element gültig ist.
Authentifizierungsmethoden können angepasst werden. Wenn der Rückgabewert wahr ist, wird die Ausführung fortgesetzt; wenn der Rückgabewert falsch ist, wird die Iteration beendet.
3. foreach ruft weiterhin Iterator auf.
Gibt den Schlüssel und Wert des angegebenen Features zurück.
4. Der Methodenkörper von foreach
var_dump($key,$value)
5. Rufen Sie nach jeder Iteration den Iterator auf, um das nächste Element zu bestimmen, und wiederholen Sie den zweiten Schritt.
Beispiel
string(18) „myIterator::rewind“ // Rufen Sie die Rewind-Methode auf, bevor die Iteration beginnt, kehren Sie zum ersten Element des Iterators zurück und führen Sie $this->position = 1; string(17) "myIterator::valid" //Überprüfen Sie, ob das aktuelle Element $this->array[1] gültig ist, und setzen Sie die Ausführung fort, wenn es gültig ist; string(19) "myIterator::current" // Den Wert zurückgeben, der dem aktuellen Element entspricht $this->array[0]='firstelement' string(15) "myIterator::key" // Gibt den Schlüssel des aktuellen Elements zurück $this->position = 1 int(1) //var_dump($key) string(12) „secondelement“ //var_dump($value) string(16) "myIterator::next" //Gehe vorwärts zum nächsten Element++$this->position=2 string(17) "myIterator::valid" //Überprüfen Sie, ob das aktuelle Element $this->array[2] gültig ist, und setzen Sie die Ausführung fort, wenn es gültig ist; string(19) "myIterator::current" //Wiederholen Sie die vorherigen Schritte string(15) "myIterator::key" //Wiederholen Sie die vorherigen Schritte int(2) //Wiederholen Sie die vorherigen Schritte string(11) „lastelement“ //Wiederholen Sie die vorherigen Schritte string(16) "myIterator::next" //Gehe vorwärts zum nächsten Element++$this->position=3 string(17) „myIterator::valid“ //Überprüfen Sie, ob das aktuelle Element $this->array[3] gültig ist, beenden Sie den Durchlauf, wenn es ungültig ist
Das Obige ist eine Analyse des Funktionsprinzips des PHP-Iterators. Ich hoffe, dass es für alle hilfreich ist.