PHP生成器語法yield

yield的目的就是節省內存,有了它我們可以用來技術超大型計算和大型文件上傳存

舉個例子

echo "初始: " . memory_get_usage() . " 字節 </br>";
function createRange($number)
{
    $data = [];
    for ($i = 0; $i < $number; $i++) {
        $data[] = time();
    }
    return $data;
}

function createRange2($number)
{
    for ($i = 0; $i < $number; $i++) {
        yield time();
    }
}

$result = createRange2(10);

foreach ($result as $value) {
    sleep(1);
    echo $value . "</br>";
}

echo "最終: " . memory_get_usage() . " 字節 </br>";
echo "內存總量: " . memory_get_peak_usage() . " 字節 </br>";

分別執行createRange和createRange2查看內存消耗

注:一個生成器不可以返回值: 這樣做會產生一個編譯錯誤。然而return空是一個有效的語法並且它將會終止生成器繼續執行。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章