Heim  >  Artikel  >  Backend-Entwicklung  >  PHP-Generator – Erzeugt dynamisch ein Array von Inhalten

PHP-Generator – Erzeugt dynamisch ein Array von Inhalten

藏色散人
藏色散人nach vorne
2020-02-17 17:16:173260Durchsuche

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.

PHP-Generator – Erzeugt dynamisch ein Array von Inhalten

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 &#39;生成器开始执行&#39; . PHP_EOL;
      for ($i = 0; $i < 5; $i++) {
           echo &#39;产生数据之前:&#39; . $i  . PHP_EOL;
           yield $i; 
           echo &#39;产生数据之后:&#39; . $i  . PHP_EOL;
       }   
      echo &#39;再来一个数据&#39; . PHP_EOL;
      yield 5;
      echo &#39;生成器执行结束&#39; . PHP_EOL;
  }   
  $gen_func = gen();
  echo &#39;生成器开始执行了吗?&#39; . PHP_EOL;
  foreach ($gen_func as $key  => $val) {
      echo &#39;使用数据前&#39; . PHP_EOL;
      echo &#39;使用数据:&#39; . $val . PHP_EOL;
      echo &#39;使用数据后&#39; . 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;//NEIN

2 yield val;

3. Nach PHP7 kann yield from Generatoren, Arrays aufrufen, return usw. verwenden.

Weitere Inhalte zum Thema Programmierung finden Sie in der Spalte

Programmier-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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:segmentfault.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen