PHP5.5迭代生成器用法实例详解,php5.5生成器
PHP5.5迭代生成器用法实例详解,php5.5生成器
本文实例讲述了PHP5.5迭代生成器用法。分享给大家供大家参考,具体如下:
PHP5.5引入了迭代生成器的概念,迭代的概念早就在PHP有了,但是迭代生成器是PHP的一个新特性,这跟python3中的迭代生成器类似,看看PHP5.5的迭代生成器如何定义。
<?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"; }
注意关键字:yield,正是这个yeild关键字构建了一个迭代器,这个函数xrange跟以往的函数的不同之处就在这里。一般情况都是return一个值,而yield一个值就表示这是个迭代器,每循环一次这个迭代器就生成这个值,故名为迭代生成器,迭代生成器这个函数可以进行foreach循环,每次都产生一个值。
PHP5.5之前是通过定义类实现Iterator接口的方式来构造迭代器,通过yield构造迭代器将更加提升性能节省系统开销。
这种方法的优点是显而易见的.它可以让你在处理大数据集合的时候不用一次性的加载到内存中,甚至你可以处理无限大的数据流。
如上面例子所示,这个迭代器的功能是生成从1到1000000的数字,循环输出,那么使用以往的方式是生成好这1到1000000的数字到数组中,将会十分占用内存,因为是事先就要生成好所有结果,而不是用的时候按需生成,也就是说调用xrange这个迭代器的时候,里面的函数还没有真正的运行,直到你每一次的迭代。
再看看PHP官网的例子:
<?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"; ?>
这里的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设计模式之迭代器模式的深入解析

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Depuis cette année, Zhou Hongyi, le fondateur du groupe 360, est indissociable d'un sujet dans tous ses discours publics, à savoir celui des grands modèles d'intelligence artificielle. Il s'est un jour appelé « l'évangéliste du GPT » et a fait l'éloge des avancées réalisées par ChatGPT. Il était également fermement optimiste quant aux itérations technologiques de l'IA qui en résulteraient. En tant qu'entrepreneur célèbre qui sait s'exprimer, les discours de Zhou Hongyi sont souvent pleins de remarques pleines d'esprit, de sorte que ses « sermons » ont également créé de nombreux sujets d'actualité et ont même alimenté le feu des grands modèles d'IA. Mais pour Zhou Hongyi, être un leader d’opinion ne suffit pas. Le monde extérieur se préoccupe davantage de la manière dont 360, l’entreprise qu’il dirige, réagit à cette nouvelle vague d’IA. En fait, au sein de 360, Zhou Hongyi a déjà initié un changement pour tous les employés. En avril, il a publié une lettre interne demandant à chaque employé et à chaque employé de 360.

Boucles et itérations : concepts de base de la programmation Les boucles et les itérations sont des concepts essentiels en programmation qui permettent à un programme d'exécuter de manière répétée un ensemble d'instructions. Les boucles sont utilisées pour spécifier explicitement le nombre de répétitions, tandis que les itérations sont utilisées pour parcourir les éléments d'une collection ou d'une structure de données. Types de boucles Il existe trois principaux types de boucles : 1. boucle for Une boucle for est utilisée pour exécuter un bloc de code lorsque vous connaissez le nombre de répétitions. Sa syntaxe est la suivante : for (initialisation; condition; incrément/décrément) {//bloc de code à exécuter de manière répétée} Par exemple, la boucle for suivante imprime les nombres 1 à 10 : for(inti=1;i

TreeMap est une classe de JavaCollectionFramework qui implémente l'interface NavigableMap. Il stocke les éléments de la carte dans une structure arborescente et constitue un moyen efficace de stocker les paires clé-valeur dans un ordre trié. En d’autres termes, il renvoie toujours les éléments par ordre croissant. Cependant, Java propose plusieurs méthodes pour parcourir un TreeMap par ordre décroissant. Dans cet article, nous explorerons la méthode de parcours d'un TreeMap dans l'ordre inverse. Parcourir un TreeMap dans l'ordre inverse en Java Nous allons imprimer les éléments d'un TreeMap dans l'ordre inverse en utilisant la méthode suivante : Utilisation de la méthode TreeMap.descendingMap() Utilisation de TreeMap.de

Pour apprendre la méthode d'implémentation de l'itération jQuery à partir de zéro, vous avez besoin d'exemples de code spécifiques. jQuery est une bibliothèque JavaScript populaire largement utilisée dans le développement Web. Parmi elles, l'itération est l'une des opérations couramment utilisées dans jQuery, grâce à l'itération, un ensemble d'éléments peut être parcouru et les opérations correspondantes effectuées. Cet article présentera comment apprendre l'implémentation de l'itération jQuery à partir de zéro, en se concentrant sur les principes de base de l'itération et des exemples de code spécifiques. 1. Principes de base de l'itération Dans jQuery, la mise en œuvre de l'itération repose principalement sur

Comment utiliser le module fileinput pour l'itération de fichiers dans Python3.x Dans la programmation Python, nous avons souvent besoin d'exploiter des fichiers, comme lire le contenu d'un fichier, écrire le contenu d'un fichier, etc. Lors du traitement de plusieurs fichiers, le module fileinput peut être utilisé pour effectuer facilement des opérations d'itération de fichiers. Cet article explique comment utiliser le module fileinput pour l'itération de fichiers dans Python3.x et fournit des exemples de code. Le module fileinput est la bibliothèque standard Python

Boucles et itérations : analyse de concept Une boucle est une structure de contrôle qui permet à un bloc de code d'être exécuté de manière répétée un nombre de fois spécifié ou jusqu'à ce qu'une condition spécifique soit remplie. Python fournit une variété de types de boucles, y compris les boucles for, les boucles while et les boucles do-while. D'un autre côté, l'itération est un concept abstrait qui représente le processus de parcours des éléments d'une séquence dans l'ordre. Python fournit des outils tels que des itérateurs et des générateurs pour implémenter l'itération. Boucle vs itération : similitudes et différences Mécanisme d'exécution : les boucles contrôlent explicitement le flux d'exécution, tandis que les itérations sont effectuées implicitement via des objets itérateurs. Gestion de l'état : les boucles conservent leur propre état (comme les compteurs ou les conditions), tandis que les itérateurs encapsulent la gestion de l'état. Scénarios d'utilisation : les boucles conviennent aux moments qui doivent être répétés un nombre fixe de fois ou jusqu'à ce que le

Comment utiliser les instructions de boucle pour implémenter des calculs itératifs en Java En programmation, nous devons souvent effectuer des calculs ou des opérations répétitifs. À l'heure actuelle, les instructions de boucle jouent un rôle important. En Java, il existe trois formes d'instructions de boucle : la boucle for, la boucle while et la boucle do-while. Ces instructions de boucle peuvent nous aider à mettre en œuvre des calculs itératifs, c'est-à-dire à travers plusieurs boucles pour approcher progressivement les résultats souhaités. Ce qui suit présentera en détail comment utiliser ces instructions de boucle pour implémenter des calculs itératifs en Java et donnera des exemples de code correspondants.

Boucles Une boucle est une structure qui exécute de manière répétée un bloc de code jusqu'à ce qu'une condition spécifique soit remplie. Python fournit une variété de types de boucles : boucle for : utilisée pour parcourir chaque élément d'une séquence (comme une liste, un tuple). foritemin[1,2,3,4,5]:print(item)#Output : 1,2,3,4,5while boucle : utilisée pour exécuter le bloc de code à plusieurs reprises tant que la condition est vraie. nombre = 0 pendant que compte
