Inhaltsverzeichnis
PHP5.5迭代生成器用法实例详解,php5.5生成器
您可能感兴趣的文章:
Heim php教程 php手册 PHP5.5迭代生成器用法实例详解,php5.5生成器

PHP5.5迭代生成器用法实例详解,php5.5生成器

Jun 13, 2016 am 08:44 AM
迭代

PHP5.5迭代生成器用法实例详解,php5.5生成器

本文实例讲述了PHP5.5迭代生成器用法。分享给大家供大家参考,具体如下:

PHP5.5引入了迭代生成器的概念,迭代的概念早就在PHP有了,但是迭代生成器是PHP的一个新特性,这跟python3中的迭代生成器类似,看看PHP5.5的迭代生成器如何定义。

<&#63;php
function xrange($start, $end, $step = 1) {
    for ($i = $start; $i <= $end; $i += $step) {
      yield $i;
    }
}
foreach (xrange(1, 1000000) as $num) {
    echo $num, "\n";
}

Nach dem Login kopieren

注意关键字:yield,正是这个yeild关键字构建了一个迭代器,这个函数xrange跟以往的函数的不同之处就在这里。一般情况都是return一个值,而yield一个值就表示这是个迭代器,每循环一次这个迭代器就生成这个值,故名为迭代生成器,迭代生成器这个函数可以进行foreach循环,每次都产生一个值。

PHP5.5之前是通过定义类实现Iterator接口的方式来构造迭代器,通过yield构造迭代器将更加提升性能节省系统开销

这种方法的优点是显而易见的.它可以让你在处理大数据集合的时候不用一次性的加载到内存中,甚至你可以处理无限大的数据流。

如上面例子所示,这个迭代器的功能是生成从1到1000000的数字,循环输出,那么使用以往的方式是生成好这1到1000000的数字到数组中,将会十分占用内存,因为是事先就要生成好所有结果,而不是用的时候按需生成,也就是说调用xrange这个迭代器的时候,里面的函数还没有真正的运行,直到你每一次的迭代。

再看看PHP官网的例子:

<&#63;php
function xrange($start, $limit, $step = 1) {
  for ($i = $start; $i <= $limit; $i += $step) {
    yield $i;
  }
}
echo 'Single digit odd numbers: ';
/*
 * Note that an array is never created or returned,
 * which saves memory.
 */
foreach (xrange(1, 9, 2) as $number) {
  echo "$number ";
}
echo "\n";
&#63;>

Nach dem Login kopieren

这里的xrange是一个迭代,功能和range是一样的,如果使用range函数的话,那么函数内部实现会储存每个迭代的中间过程,即每个中间变量都有 个内存空间,那么首先程序使用的内存空间就大了,而且分配内存,回收内存都会导致程序的运行时间加长。但是如果使用上yield实现的xrange函数的 话,里面所有的中间变量都只使用一个内存$i,这样节省的时间和空间都会变小。

那么为什么yield会有这样的效果呢?联想到lua中的yield,这里就算是协程的概念了。在lua语言中,当程序运行到yield的时候,使用协程 将上下文环境记录住,然后将程序操作权归还到主函数,当主函数调用resume的时候,会重新唤起协程,读取yield记录的上下文。这样形成了程序语言 级别的多协程操作。php 5.5这里的yield也是同样的道理,当程序运行到yield的时候,当前程序就唤起协程记录上下文,然后主函数继续操作,只是php中没有使用如 resume一样的关键字,而是“在使用的时候唤起”协程。比如上例中的foreach迭代器就能唤起yield。所以上面的这个例子就能理解了。

更多关于PHP相关内容感兴趣的读者可查看本站专题:《php操作office文档技巧总结(包括word,excel,access,ppt)》、《php日期与时间用法总结》、《php面向对象程序设计入门教程》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

希望本文所述对大家PHP程序设计有所帮助。

您可能感兴趣的文章:

  • 如何把php5.3版本升级到php5.4或者php5.5
  • PHP5.5和之前的版本empty函数的不同之处
  • PHP5.5在windows安装使用memcached服务端的方法
  • php5.5中类级别的常量使用介绍
  • php5.5新数组函数array_column使用
  • php可应用于面包屑导航的迭代寻找家谱树实现方法
  • php使用递归与迭代实现快速排序示例
  • PHP迭代器的内部执行过程详解
  • PHP迭代器实现斐波纳契数列的函数
  • PHP设计模式之迭代器模式的深入解析
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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

KI-Technologie beschleunigt die Iteration: Großmodellstrategie aus der Sicht von Zhou Hongyi KI-Technologie beschleunigt die Iteration: Großmodellstrategie aus der Sicht von Zhou Hongyi Jun 15, 2023 pm 02:25 PM

Seit diesem Jahr ist Zhou Hongyi, der Gründer der 360 Group, in all seinen öffentlichen Reden untrennbar mit einem Thema verbunden, und zwar mit großen Modellen der künstlichen Intelligenz. Er nannte sich einmal „der Evangelist von GPT“ und war voll des Lobes für die Durchbrüche, die ChatGPT erzielt hat. Er war auch fest optimistisch, was die daraus resultierenden Iterationen der KI-Technologie angeht. Als Starunternehmer, der sich gut ausdrücken kann, sind die Reden von Zhou Hongyi oft voller witziger Bemerkungen, sodass seine „Predigten“ auch viele heiße Themen geschaffen und großen KI-Modellen tatsächlich Feuer verliehen haben. Aber für Zhou Hongyi reicht es nicht aus, ein Meinungsführer zu sein. Die Außenwelt ist mehr besorgt darüber, wie 360, das Unternehmen, das er leitet, auf diese neue Welle der KI reagiert. Tatsächlich hat Zhou Hongyi innerhalb von 360 bereits eine Änderung für alle Mitarbeiter eingeleitet. Im April hat er einen internen Brief herausgegeben, in dem er jeden Mitarbeiter und jeden Mitarbeiter von 360 dazu auffordert

Abenteuer in Schleifen und Iteration: Ein Abenteuer im Python-Code Abenteuer in Schleifen und Iteration: Ein Abenteuer im Python-Code Feb 19, 2024 pm 08:48 PM

Schleifen und Iterationen: Kernkonzepte in der Programmierung Schleifen und Iterationen sind wesentliche Konzepte in der Programmierung, die es einem Programm ermöglichen, eine Reihe von Anweisungen wiederholt auszuführen. Schleifen werden verwendet, um die Anzahl der Wiederholungen explizit anzugeben, während Iterationen verwendet werden, um über die Elemente in einer Sammlung oder Datenstruktur zu iterieren. Arten von Schleifen Es gibt drei Haupttypen von Schleifen: 1. for-Schleife Eine for-Schleife wird verwendet, um einen Codeblock auszuführen, wenn Sie die Anzahl der Wiederholungen kennen. Seine Syntax lautet wie folgt: for (Initialisierung; Bedingung; Inkrementieren/Dekrementieren) {//Codeblock, der wiederholt ausgeführt werden soll} Die folgende for-Schleife gibt beispielsweise die Zahlen 1 bis 10 aus: for(inti=1;i

In Java in umgekehrter Reihenfolge über TreeMap iterieren In Java in umgekehrter Reihenfolge über TreeMap iterieren Aug 21, 2023 pm 01:05 PM

TreeMap ist eine Klasse von JavaCollectionFramework, die die NavigableMap-Schnittstelle implementiert. Es speichert die Elemente der Karte in einer Baumstruktur und bietet eine effiziente Möglichkeit, Schlüssel-Wert-Paare in sortierter Reihenfolge zu speichern. Mit anderen Worten: Die Elemente werden immer in aufsteigender Reihenfolge zurückgegeben. Allerdings bietet Java mehrere Methoden zum Durchlaufen einer TreeMap in absteigender Reihenfolge. In diesem Artikel untersuchen wir die Methode zum Durchlaufen einer TreeMap in umgekehrter Reihenfolge. In Java über eine TreeMap in umgekehrter Reihenfolge iterieren. Wir werden die Elemente einer TreeMap in umgekehrter Reihenfolge mit der folgenden Methode drucken: Mit der TreeMap.descendingMap()-Methode Mit TreeMap.de

Erfahren Sie, wie Sie die jQuery-Iteration von Grund auf implementieren Erfahren Sie, wie Sie die jQuery-Iteration von Grund auf implementieren Feb 29, 2024 am 09:45 AM

Um die Implementierungsmethode der jQuery-Iteration von Grund auf zu erlernen, benötigen Sie spezifische Codebeispiele. jQuery ist eine beliebte JavaScript-Bibliothek, die in der Webentwicklung weit verbreitet ist. Unter diesen ist die Iteration eine der am häufigsten verwendeten Operationen in jQuery. Durch Iteration kann eine Reihe von Elementen durchlaufen und entsprechende Operationen ausgeführt werden. In diesem Artikel wird erläutert, wie Sie die Implementierung der jQuery-Iteration von Grund auf erlernen können, wobei der Schwerpunkt auf den Grundprinzipien der Iteration und spezifischen Codebeispielen liegt. 1. Grundprinzipien der Iteration In jQuery basiert die Implementierung der Iteration hauptsächlich auf

So verwenden Sie das Fileinput-Modul für die Dateiiteration in Python 3.x So verwenden Sie das Fileinput-Modul für die Dateiiteration in Python 3.x Jul 29, 2023 pm 11:45 PM

So verwenden Sie das Fileinput-Modul für die Dateiiteration in Python3.x. In der Python-Programmierung müssen wir häufig Dateien bedienen, z. B. Dateiinhalte lesen, Dateiinhalte schreiben usw. Bei der Verarbeitung mehrerer Dateien kann das Dateieingabemodul verwendet werden, um Dateiiterationsvorgänge einfach durchzuführen. In diesem Artikel wird die Verwendung des Fileinput-Moduls für die Dateiiteration in Python3.x vorgestellt und Codebeispiele bereitgestellt. Das Fileinput-Modul ist die Python-Standardbibliothek

Python-Schleifen und -Iterationen: eine umfassende Analyse ihrer Ähnlichkeiten und Unterschiede Python-Schleifen und -Iterationen: eine umfassende Analyse ihrer Ähnlichkeiten und Unterschiede Feb 19, 2024 pm 02:54 PM

Schleifen und Iterationen: Konzeptanalyse Eine Schleife ist eine Kontrollstruktur, die es ermöglicht, einen Codeblock wiederholt mit einer bestimmten Anzahl von Malen oder bis eine bestimmte Bedingung erfüllt ist, auszuführen. Python bietet eine Vielzahl von Schleifentypen, darunter for-Schleifen, while-Schleifen und do-while-Schleifen. Andererseits ist Iteration ein abstraktes Konzept, das den Prozess des Durchlaufens der Elemente einer Sequenz der Reihe nach darstellt. Python stellt Tools wie Iteratoren und Generatoren zur Implementierung der Iteration bereit. Schleife vs. Iteration: Ähnlichkeiten und Unterschiede Ausführungsmechanismus: Schleifen steuern explizit den Ausführungsfluss, während Iterationen implizit über Iteratorobjekte ausgeführt werden. Zustandsverwaltung: Schleifen verwalten ihren eigenen Zustand (z. B. Zähler oder Bedingungen), während Iteratoren die Zustandsverwaltung kapseln. Verwendungsszenarien: Schleifen eignen sich für Zeiten, die eine feste Anzahl von Malen oder bis zum wiederholt werden müssen

Verwendung von Schleifenanweisungen zur Implementierung iterativer Berechnungen in Java Verwendung von Schleifenanweisungen zur Implementierung iterativer Berechnungen in Java Oct 18, 2023 am 10:40 AM

So verwenden Sie Schleifenanweisungen zur Implementierung iterativer Berechnungen in Java. Beim Programmieren müssen wir häufig einige sich wiederholende Berechnungen oder Operationen durchführen. Zu diesem Zeitpunkt spielen Schleifenanweisungen eine wichtige Rolle. In Java gibt es drei Formen von Schleifenanweisungen: for-Schleife, while-Schleife und do-while-Schleife. Diese Schleifenanweisungen können uns bei der Implementierung iterativer Berechnungen helfen, d. h. durch mehrere Schleifen, um uns schrittweise dem gewünschten Ergebnis zu nähern. Im Folgenden wird detailliert beschrieben, wie diese Schleifenanweisungen zur Implementierung iterativer Berechnungen in Java verwendet werden, und entsprechende Codebeispiele werden angegeben.

Schleifen und Iterationen: Die Geheimwaffe für effiziente Datenverarbeitung in Python Schleifen und Iterationen: Die Geheimwaffe für effiziente Datenverarbeitung in Python Feb 19, 2024 pm 02:21 PM

Schleifen Eine Schleife ist eine Struktur, die einen Codeblock wiederholt ausführt, bis eine bestimmte Bedingung erfüllt ist. Python bietet eine Vielzahl von Schleifentypen: for-Schleife: Wird zum Durchlaufen jedes Elements in einer Sequenz (z. B. einer Liste, eines Tupels) verwendet. foritemin[1,2,3,4,5]:print(item)#Ausgabe: 1,2,3,4,5while-Schleife: Wird verwendet, um den Codeblock wiederholt auszuführen, solange die Bedingung wahr ist. count=0whilecount

See all articles