Heim > Backend-Entwicklung > PHP-Tutorial > Erweiterte PHP-Funktionen: die wunderbaren Einsatzmöglichkeiten von Generatoren und Iteratoren

Erweiterte PHP-Funktionen: die wunderbaren Einsatzmöglichkeiten von Generatoren und Iteratoren

WBOY
Freigeben: 2024-06-01 20:44:00
Original
1005 Leute haben es durchsucht

Antwort: Generatoren und Iteratoren sind spezielle Funktionen und Objekte, die Werte einzeln generieren können, ohne den gesamten Datensatz zu speichern. Generator: Erzeugt eine Reihe von Werten, einen Wert für jeden Aufruf. Iterator: Bietet eine Methode für den Zugriff auf Sammlungselemente und generiert beim Durchlaufen ein Element. Wird zum Seitenwechsel verwendet, um Datensätze Seite für Seite zu generieren, ohne die gesamten Daten zu speichern im Gedächtnis verankert.

Erweiterte PHP-Funktionen: die wunderbaren Einsatzmöglichkeiten von Generatoren und Iteratoren

Erweiterte PHP-Funktionen: Die magische Verwendung von Generatoren und Iteratoren

Generator

Ein Generator ist eine spezielle Funktion, die zum Generieren einer Reihe von Werten verwendet wird. Im Gegensatz zu regulären Funktionen können Generatoren bei jedem Aufruf einen Wert erzeugen, ohne das gesamte Wertearray im Speicher zu speichern.

function numbersGenerator() {
  for ($i = 1; $i <= 10; $i++) {
    yield $i;
  }
}

foreach (numbersGenerator() as $number) {
  echo $number . "\n";
}
Nach dem Login kopieren

Iterator

Ein Iterator ist ein Objekt, das eine Möglichkeit bietet, auf Elemente in einer Sammlung zuzugreifen. Wie Generatoren können Iteratoren ein Element generieren, während sie eine Sammlung durchlaufen, ohne die gesamte Sammlung im Speicher zu speichern.

class NumberIterator implements Iterator {
  private $start;
  private $end;
  private $current;

  public function __construct($start, $end) {
    $this->start = $start;
    $this->end = $end;
    $this->current = $start;
  }

  public function rewind() {
    $this->current = $this->start;
  }

  public function current() {
    return $this->current;
  }

  public function key() {
    return $this->current;
  }

  public function next() {
    $this->current++;
  }

  public function valid() {
    return $this->current <= $this->end;
  }
}

$iterator = new NumberIterator(1, 10);

foreach ($iterator as $number) {
  echo $number . "\n";
}
Nach dem Login kopieren

Praktischer Fall: Paginator

Generatoren und Iteratoren eignen sich sehr gut für Paging-Szenarien. Durch die Verwendung von Generatoren oder Iteratoren können wir den Datensatz Seite für Seite generieren, ohne den gesamten Datensatz im Speicher zu speichern.

function paginate($query, $pageSize) {
  $page = 1;

  while (true) {
    $offset = ($page - 1) * $pageSize;
    $results = $query->offset($offset)->limit($pageSize)->execute();

    if (count($results) === 0) {
      break;
    }

    yield $results;
    $page++;
  }
}

foreach (paginate($query, 10) as $page) {
  echo "Page $page\n";
  foreach ($page as $result) {
    // Process the result
  }
}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonErweiterte PHP-Funktionen: die wunderbaren Einsatzmöglichkeiten von Generatoren und Iteratoren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
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