Maison >développement back-end >tutoriel php >Générateur PHP - générer dynamiquement un tableau de contenu
Définition :
1. Générateur : "Tableau de contenu généré dynamiquement", qui est produit uniquement lorsque la valeur est utilisée.
2. Utiliser avec : rendement du mot clé pour chaque
Recommandé : "formation php"
Processus :
1. En tant que méthode génératrice, cela équivaut à définir un tableau
2. Chaque occurrence de rendement dans le générateur équivaut à définir la valeur qui apparaît dans un tableau ; 3.foreach parcourra toutes les valeurs définies par le rendement (une valeur définie (expression)) dans le générateur Seulement lorsqu'il est utilisé, d'autres expressions entre le rendement actuel et le rendement précédent seront exécutées, l'expression après le rendement actuel. rendement ne sera pas exécuté);
4. Si foreach se termine normalement (pas de pause), déterminez s'il y a d'autres expressions après le dernier rendement dans le générateur qui n'ont pas été exécutées.
5. Contrairement aux threads, il n'est pas exécuté en parallèle. Il bascule simplement l'exécution entre la logique métier principale et le générateur, ce qui économise uniquement de l'espace mais pas du temps.
Imaginez des scénarios d'utilisation :1 Récupérez le fichier big data et lisez-le ligne par ligne dans le générateur
2.? ? ?Exemple :
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; //} }
Résultat de l'exécution :
php gen.php 生成器开始执行了吗? 生成器开始执行 产生数据之前:0 使用数据前 使用数据:0 使用数据后 产生数据之后:0 产生数据之前:1 使用数据前 使用数据:1 使用数据后 产生数据之后:1 产生数据之前:2 使用数据前 使用数据:2 使用数据后 产生数据之后:2 产生数据之前:3 使用数据前 使用数据:3 使用数据后 产生数据之后:3 产生数据之前:4 使用数据前 使用数据:4 使用数据后 产生数据之后:4 再来一个数据 使用数据前 使用数据:5 使用数据后 生成器执行结束partie Interprétation du processus d'exécution :
1. La ligne 14 n'appelle pas le générateur gen(), elle le définit simplement
2. Après être entré dans la boucle foreach, commencez à appeler gen ; (); 3. Lorsque $val a besoin d'une valeur, mémorisez la position actuelle a et exécutez le générateur 4. position actuelle b., revenir à la position a; 5. Boucler les étapes 3 et 4; 6. Fin de la boucle, exécuter la partie restante après le dernier lieu de rendement défini; >7. Supprimez les commentaires sur les lignes 20, 21 et 22 et exécutez « Utiliser les données : 4 Après avoir utilisé les données », il n'y aura aucune autre sortie.
Autres (uniquement la version PHP7.1.14 vérifiée)1 valeur);//OUI valeur;//NON2. rendement val;
3. Après PHP7, rendement from peut appeler des générateurs, des tableaux, utiliser return, etc.
Pour plus de contenu lié à la programmation, veuillez faire attention à la colonne
Tutoriel de programmationdu site Web PHP chinois !
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!