Maison > développement back-end > tutoriel php > Explication détaillée des étapes pour utiliser le générateur PHP

Explication détaillée des étapes pour utiliser le générateur PHP

php中世界最好的语言
Libérer: 2023-03-26 13:26:01
original
1521 Les gens l'ont consulté

Cette fois, je vais vous donner une explication détaillée des étapes pour utiliser le générateur PHP. Quelles sont les précautions lors de l'utilisation du générateur PHP Voici un cas pratique, jetons un coup d'œil.

1. Description officielle : les générateurs offrent un moyen plus simple d'implémenter une itération d'objet simple. Par rapport à la définition d'une classe pour implémenter l'interface Iterator, la surcharge de performances et la complexité sont bien plus réduites. Les générateurs vous permettent d'écrire du code dans un bloc foreach pour parcourir un ensemble de données sans créer de tableau en mémoire.

2. Le générateur est comme une fonction personnalisée ordinaire. Différent de la fonction ordinaire qui ne renvoie qu'une seule fois, le générateur peut produire autant de fois que nécessaire pour générer l'itération nécessaire. avoir de la valeur.

3. Exemples de code :

//未使用生成器
echo '开始内存:'.getMemory().'<br>';
$nums = range(0,1000000);
echo '结束内存:'.getMemory().'<br>';
//输出结果
//开始内存:0.23M
//结束内存:130.31
//使用生成器
echo '开始内存:'.getMemory().'<br>';
$nums = xrange(1000000);
function xrange($total)
{
  for ($i = 0; $i < $total; $i++) {
    yield $i;
  }
}
echo '结束内存:'.getMemory().'<br>';
//输出结果
//开始内存:0.23M
//结束内存:0.23M
Copier après la connexion

4. Exemples d'applications pratiques

/**
 * 大量数据生成示例
 * @param int $page
 * @param int $limit
 * @return Generator
 */
public function generator($page = 1,$limit = 50000)
{
  while (true) {
    echo "第{$page}次".'generator开始内存:'.$this->getMemory().'<br>';
    $start = ($page-1) * $limit;
    $sql = "SELECT p.id,p.wh_code,p.goods_sn FROM p_product as p WHERE p.wh_code LIKE '%YB%' OR p.wh_code LIKE '%DZWH%' LIMIT {$start},{$limit} ";
    $resultAll = db()->fetchAll($sql);
    yield $resultAll; //生成器
    if (count($resultAll) != $limit) {
      break;
    }
    echo "第{$page}次".'generator结束内存:'.$this->getMemory().'<br>';
    $page++;
  }
}
    //测试生成器内存消耗
//    foreach ($this->generator() as $result) {
//      var_dump($result[0]);
//    }
Copier après la connexion

Je pense que vous maîtrisez la méthode après avoir lu le cas présenté dans cet article. faites attention aux choses plus excitantes. Autres articles connexes sur le site Web chinois de php !

Lecture recommandée :

Explication détaillée des étapes pour implémenter le cryptage de hachage unidirectionnel en PHP

Explication détaillée des étapes pour masquer le fichier d'entrée en PHP

Étapes détaillées pour installer l'extension php-mongodb via PECL

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal