php yield bedeutet, dass das Schlüsselwort yield Daten von der Generatorfunktion zurückgibt. Die yield-Anweisung ähnelt stark der return-Anweisung und stellt einen Schleifengeneratorcode bereit. Wert und unterbricht die Ausführung der Generatorfunktion.
PHP-Ertrag bedeutet:
1. Was ist Ertrag?
Das Schlüsselwort yield gibt Daten von der Generatorfunktion zurück:
Der Kern der Generatorfunktion ist das Schlüsselwort yield. In ihrer einfachsten Form ähnelt eine Yield-Anweisung stark einer Return-Anweisung. Anstatt die Ausführung einer Funktion zu stoppen und zurückzugeben, liefert yield einen Wert für den Code des Schleifengenerators und hält die Ausführung der Generatorfunktion an.
2. Was ist eine Generatorfunktion?
Generatorfunktionen sind tatsächlich eine kompaktere und effizientere Art, Iteratoren zu schreiben. Sie können damit eine Funktion (Ihren xrange) definieren, die
Werte berechnet und zurückgibt, während Sie über die Funktion iterieren:
foreach (xrange(1, 10) as $key => $value) { echo "$key => $value", PHP_EOL; }
Dadurch wird die folgende Ausgabe erstellt:
0 => 1 1 => 2 … 9 => 10
Sie können $key
in foreach
auch steuern, indem Sie
yield $someKey => $someValue;
in der Generatorfunktion verwenden. $someKey
ist das, was Sie anzeigen möchten $key
und $someValue
ist der Wert in $val
. Im Beispiel der Frage ist es $i
.
3. Wie unterscheidet es sich von der normalen Funktion?
Jetzt fragen Sie sich vielleicht, warum wir nicht einfach die native Range-Funktion von PHP verwendet haben, um diese Ausgabe zu erzielen. Ja, das sind Sie. Die Ausgabe wird dieselbe sein. Der Unterschied besteht darin, wie wir dorthin gelangen.
Wenn wir „range“ verwenden, führt PHP es aus, erstellt ein ganzes Array von Zahlen im Speicher und gibt die foreach-Schleife zurück, die denkt, dass das gesamte Array
es dann durchgeht und den Wert ausgibt. Mit anderen Worten: foreachwill wird das Array selbst bearbeiten. Die Range-Funktion und foreach „sprechen“ nur einmal. Stellen Sie sich das so vor, als würden Sie ein Paket per Post erhalten. Der Zusteller übergibt Ihnen das Paket und geht. Packen Sie dann das gesamte Paket aus und entfernen Sie den Inhalt.
Wenn wir eine Generatorfunktion verwenden, greift PHP in die Funktion ein und führt sie aus, bis es auf das Schlüsselwort end oder yield stößt. Wenn es auf yield stößt, gibt es den aktuellen Wert an die äußere Schleife zurück. Anschließend kehrt es zur Generatorfunktion zurück und fährt dort fort, wo es generiert wurde. Da Ihr xrange über eine for-Schleife verfügt, wird er ausgeführt und ausgegeben, bis $max erreicht ist. Stellen Sie sich das so vor, als ob foreach und der Generator Tischtennis spielen würden.
4. Warum brauche ich das?
Natürlich können Generatoren verwendet werden, um Speicherbeschränkungen zu umgehen. Abhängig von Ihrer Umgebung führt die Ausführung von range(1, 1000000) dazu, dass Ihr Skript fatal wird, während es in Ordnung ist, dasselbe mit Generatoren zu tun. Oder wie Wikipedia sagt:
Da Generatoren ihre Ertragswerte nur auf Anfrage berechnen, sind sie nützlich für die Darstellung von Sequenzen, die teuer sind oder nicht sofort berechnet werden können. Dazu gehören beispielsweise unendliche Sequenzen und Echtzeit-Datenstreaming.
Der Generator sollte auch schnell sein. Aber denken Sie daran: Wenn wir über Schnelligkeit reden, sprechen wir normalerweise in sehr kleinen Begriffen. Bevor Sie also mit der Ausführung und Änderung Ihres gesamten Codes beginnen, um einen Generator zu verwenden, führen Sie einen Benchmark durch, um festzustellen, wo dies sinnvoll ist.
Ein weiterer Anwendungsfall für Generatoren sind asynchrone Coroutinen. Das Schlüsselwort yield gibt nicht nur Werte zurück, sondern akzeptiert diese auch. Weitere Informationen hierzu finden Sie in den beiden unten verlinkten hervorragenden Blogbeiträgen.
5. Ab wann kann der Ertrag genutzt werden?
Generatoren wurden
in PHP 5.5 eingeführt. Der Versuch, eine frühere Version von yield zu verwenden, führt je nach Code, der dem Schlüsselwort folgt, zu verschiedenen Parsing-Fehlern. Wenn Sie also Parsing-Fehler von diesem Code erhalten, aktualisieren Sie bitte Ihr PHP.
Verwandte Lernempfehlungen: PHP-Programmierung vom Einstieg bis zur Beherrschung
Das obige ist der detaillierte Inhalt vonWas bedeutet PHP-Ertrag?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!