Heim > Artikel > Backend-Entwicklung > PHP-Generator – Erzeugt dynamisch ein Array von Inhalten
Definition:
1. Generator: „Dynamisch generiertes Inhaltsarray“, das nur erzeugt wird, wenn der Wert verwendet wird.
2. Verwendung mit: Schlüsselwort yield foreach
Empfohlen: „PHP-Training“
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 durch Yield definierten Werte (einen definierten Wert (Ausdruck)) im Generator. Nur wenn es verwendet wird, werden andere Ausdrücke zwischen dem aktuellen Yield und dem vorherigen Yield ausgeführt yield wird nicht ausgeführt);
4. Wenn foreach normal endet (nicht break), stellen Sie fest, ob es nach dem letzten yield im Generator noch andere Ausdrücke gibt, die nicht ausgeführt wurden.
5. Im Gegensatz zu Threads wird es nicht parallel ausgeführt. Es wechselt lediglich die Ausführung zwischen der Hauptgeschäftslogik und dem Generator, was nur Platz, aber keine Zeit spart.
Stellen Sie sich Nutzungsszenarien vor:1. Holen Sie sich die Big-Data-Datei und lesen Sie sie Zeile für Zeile im Generator >
2.? ? ?Beispiel:
gen.php
<?php function gen() { echo '生成器开始执行' . PHP_EOL; for ($i = 0; $i < 5; $i++) { echo '产生数据之前:' . $i . PHP_EOL; yield $i; echo '产生数据之后:' . $i . PHP_EOL; } echo '再来一个数据' . PHP_EOL; yield 5; echo '生成器执行结束' . PHP_EOL; } $gen_func = gen(); echo '生成器开始执行了吗?' . PHP_EOL; foreach ($gen_func as $key => $val) { echo '使用数据前' . PHP_EOL; echo '使用数据:' . $val . PHP_EOL; echo '使用数据后' . PHP_EOL; //if ($key >= 4) { //break; //} }
Ausführungsergebnis:
php gen.php 生成器开始执行了吗? 生成器开始执行 产生数据之前:0 使用数据前 使用数据:0 使用数据后 产生数据之后:0 产生数据之前:1 使用数据前 使用数据:1 使用数据后 产生数据之后:1 产生数据之前:2 使用数据前 使用数据:2 使用数据后 产生数据之后:2 产生数据之前:3 使用数据前 使用数据:3 使用数据后 产生数据之后:3 产生数据之前:4 使用数据前 使用数据:4 使用数据后 产生数据之后:4 再来一个数据 使用数据前 使用数据:5 使用数据后 生成器执行结束Teil Interpretation des Ausführungsprozesses:
1. Zeile 14 ruft nicht den Generator gen() auf, sondern definiert ihn nur
2. Beginnen Sie nach dem Eintritt in die foreach-Schleife (); 3. Wenn $val einen Wert benötigt, merken Sie sich die aktuelle Position a und führen Sie den Generator an der Stelle aus, an der der Ertrag definiert ist erhalten, merken Sie sich die aktuelle Position b. , kehren Sie zu Position a zurück 5 yield; 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. Wert JA;//NEIN2 yield val;3. Nach PHP7 kann yield from Generatoren, Arrays aufrufen, return usw. verwenden.
Weitere Inhalte zum Thema Programmierung finden Sie in der SpalteProgrammier-Tutorials
auf der chinesischen PHP-Website!Das obige ist der detaillierte Inhalt vonPHP-Generator – Erzeugt dynamisch ein Array von Inhalten. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!