Dieser Artikel stellt Ihnen die Analyse von Arrays (Generatoren) dynamisch generierter Inhalte in PHP vor. Ich hoffe, dass er Ihnen als Referenz dienen wird.
Definition:
Generator: „Ein Array dynamisch generierter Inhalte“, das nur erzeugt wird, wenn der Wert verwendet wird.
Verwendet mit: Schlüsselwort yield foreach
Prozess:
Als Generatormethode entspricht es der Definition eines Arrays
Jedes Vorkommen von yield im Generator entspricht der Definition des Werts, der in einem Array erscheint.
foreach durchläuft alle Werte in Der durch yield definierte Wert (ein definierter Wert (Ausdruck)) wird nur ausgeführt, wenn er verwendet wird. Andere Ausdrücke zwischen dem aktuellen yield und dem vorherigen yield werden nicht ausgeführt.
Wenn foreach normal endet (nicht break), prüfen Sie, ob nach dem letzten yield im Generator noch andere Ausdrücke vorhanden sind, die nicht ausgeführt wurden
Anders als Threads wird es nicht parallel ausgeführt, sondern wechselt lediglich die Ausführung zwischen der Hauptgeschäftslogik und dem Generator, was nur Platz, aber keine Zeit spart.
Stellen Sie sich das Nutzungsszenario vor:
1. Holen Sie sich die Big Data Datei, Zeile für Zeile im Generator lesen;
2.? ? ?
Beispiel:
gen.php 1 <?php 2 function gen() 3 { 4 echo '生成器开始执行' . PHP_EOL; 5 for ($i = 0; $i < 5; $i++) { 6 echo '产生数据之前:' . $i . PHP_EOL; 7 yield $i; 8 echo '产生数据之后:' . $i . PHP_EOL; 9 } 10 echo '再来一个数据' . PHP_EOL; 11 yield 5; 12 echo '生成器执行结束' . PHP_EOL; 13 } 14 $gen_func = gen(); 15 echo '生成器开始执行了吗?' . PHP_EOL; 16 foreach ($gen_func as $key => $val) { 17 echo '使用数据前' . PHP_EOL; 18 echo '使用数据:' . $val . PHP_EOL; 19 echo '使用数据后' . PHP_EOL; 20 //if ($key >= 4) { 21 //break; 22 //} 23 }
Ausführungsergebnis:
php gen.php
Hat der Generator mit der Ausführung begonnen?
Der Generator beginnt mit der Ausführung
Vor dem Generieren von Daten:0
Vor der Verwendung von Daten
Verwenden von Daten:0
Nach der Verwendung von Daten
Nach dem Generieren von Daten:0
Vor dem Generieren von Daten:1
Vor der Verwendung von Daten
Verwendung von Daten:1
Nach der Verwendung von Daten
Nach der Generierung von Daten:1
Vor der Generierung von Daten:2
Vor der Verwendung von Daten
Verwendung von Daten:2
Nach der Datenverwendung
Nach der Datengenerierung: 2
Vor der Datengenerierung: 3
Vor der Datenverwendung
Datenverwendung: 3
Nach der Datenverwendung
Nach der Datengenerierung: 3
Vor der Datengenerierung: 4
Vor der Datenverwendung
Datenverwendung: 4
Nach der Datenverwendung
Nach der Datengenerierung: 4
Andere Daten
Vor der Datenverwendung
Datenverwendung: 5
Nach Verwendung der Daten
Die Generatorausführung endet
Interpretation eines Teils des Ausführungsprozesses:
Zeile 14 ruft den Generator nicht auf (). Nachdem Sie die foreach-Schleife eingegeben haben, rufen Sie gen(); auf. Merken Sie sich die aktuelle Position a und führen Sie den Generator aus. Ausführen bis Wenn „Yield“ definiert ist, merken Sie sich die aktuelle Position b und kehren Sie zu Position a zurück
5. Die Schleife endet, nachdem die letzte definierte Stelle ausgeführt wurde of yield Der verbleibende Teil;
7. Entfernen Sie die Kommentare in den Zeilen 20, 21 und 22 und führen Sie „Use data: 4 After using data“ aus. Es erfolgt keine weitere Ausgabe.
Andere (nur PHP7.1.14-Version verifiziert)
1. $data = (yield $value);//YES $data = yield $value;/ / NEIN2. Sie können yield $key => $val;3 verwenden. Nach PHP7 kann yield from Generatoren, Arrays aufrufen, return usw. verwenden.
(Portal: Verfügbar im PHP-Handbuch)
Empfohlene verwandte Artikel:
Einfache Analyse von PHP-Generatoren-Generatoren
Das obige ist der detaillierte Inhalt vonParsen von Arrays (Generatoren), die Inhalte in PHP dynamisch generieren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!