Heim  >  Artikel  >  Backend-Entwicklung  >  Detaillierte Erläuterung der Schritte zur Verwendung des PHP-Generators

Detaillierte Erläuterung der Schritte zur Verwendung des PHP-Generators

php中世界最好的语言
php中世界最好的语言Original
2018-05-18 10:28:021469Durchsuche

Dieses Mal erkläre ich Ihnen ausführlich die Schritte zur Verwendung des PHP-Generators. Was sind die Vorsichtsmaßnahmen bei der Verwendung des PHP-Generators?

1. Generatoren bieten eine einfachere Möglichkeit, eine einfache Objektiteration zu implementieren, da der Leistungsaufwand und die Komplexität viel größer sind. Mit Generatoren können Sie Code in einen foreach-Block schreiben, um einen Datensatz zu durchlaufen, ohne ein Array im Speicher zu erstellen. 2. Der Generator ist wie eine gewöhnliche

benutzerdefinierte Funktion

. Anders als die gewöhnliche Funktion, die nur einmal zurückgibt, kann der Generator so oft wie nötig nachgeben, um die erforderliche Iteration zu generieren Wert sein. 3. Codebeispiel:

//未使用生成器
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

4. Praktisches Anwendungsbeispiel

/**
 * 大量数据生成示例
 * @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]);
//    }

Ich glaube, Sie haben die Methode beherrscht, nachdem Sie den Fall in diesem Artikel gelesen haben. Bitte achten Sie auf andere chinesische PHP-Websites. Verwandte Artikel!

Empfohlene Lektüre:

Detaillierte Erläuterung der Schritte zur Implementierung der Einweg-Hash-Verschlüsselung in PHP

Detaillierte Erläuterung der Schritte zur Verstecke die Eintragsdatei in PHP

Detaillierte Schritte zur Installation der PHP-Mongodb-Erweiterung über PECL

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Schritte zur Verwendung des PHP-Generators. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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