Parsen von Arrays (Generatoren), die Inhalte in PHP dynamisch generieren

不言
Freigeben: 2023-04-03 15:18:02
Original
2488 Leute haben es durchsucht

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:

  1. Als Generatormethode entspricht es der Definition eines Arrays

  2. Jedes Vorkommen von yield im Generator entspricht der Definition des Werts, der in einem Array erscheint.

  3. 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.

  4. 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

  5. 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.

Parsen von Arrays (Generatoren), die Inhalte in PHP dynamisch generieren

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 &#39;生成器开始执行&#39; . PHP_EOL;
  5     for ($i = 0; $i < 5; $i++) {
  6         echo &#39;产生数据之前:&#39; . $i  . PHP_EOL;
  7         yield $i; 
  8         echo &#39;产生数据之后:&#39; . $i  . PHP_EOL;
  9     }   
 10     echo &#39;再来一个数据&#39; . PHP_EOL;
 11     yield 5;
 12     echo &#39;生成器执行结束&#39; . PHP_EOL;
 13 }   
 14 $gen_func = gen();
 15 echo &#39;生成器开始执行了吗?&#39; . 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 }
Nach dem Login kopieren

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:

Neue Funktionen von Generatoren in PHP7: Generatordelegation (Yield-from) & Rückgabewert (Return- Wert)

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!

Verwandte Etiketten:
php
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!