Erklärung und einfache Verwendung des PHP-Generators

小云云
Freigeben: 2023-03-21 14:00:01
Original
1366 Leute haben es durchsucht

1. Offizielle Beschreibung: Generatoren bieten eine einfachere Möglichkeit, eine einfache Objektiteration zu implementieren. Im Vergleich zur Definition einer Klasse zur Implementierung der Iterator-Schnittstelle werden der Leistungsaufwand und die Komplexität erheblich reduziert. 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, die nur einmal zurückgibt. Der Generator kann so oft wie nötig nachgeben, um Werte zu generieren, die iteriert werden müssen.

3. Codebeispiele:

//未使用生成器
echo &#39;开始内存:&#39;.getMemory().&#39;<br>&#39;;
$nums = range(0,1000000);
echo &#39;结束内存:&#39;.getMemory().&#39;<br>&#39;;
//输出结果
//开始内存:0.23M
//结束内存:130.31

//使用生成器
echo &#39;开始内存:&#39;.getMemory().&#39;<br>&#39;;
$nums = xrange(1000000);
function xrange($total)
{
    for ($i = 0; $i < $total; $i++) {
        yield $i;
    }
}
echo &#39;结束内存:&#39;.getMemory().&#39;<br>&#39;;
//输出结果
//开始内存:0.23M
//结束内存:0.23M
Nach dem Login kopieren

4. Praktische Anwendungsbeispiele

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

Verwandte Empfehlungen:

Einführung in den PHP-Generator

Detaillierte Analyse der PHP-Generator-Syntax

Einfaches Beispiel eines PHP-Generators, PHP-Generator_PHP-Tutorial

Das obige ist der detaillierte Inhalt vonErklärung und einfache Verwendung des PHP-Generators. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage