成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

PHP|生成器方法替代原生range

coolpail / 3468人閱讀

摘要:標(biāo)準(zhǔn)的函數(shù)需要在內(nèi)存中生成一個數(shù)組包含每一個在它范圍內(nèi)的值,然后返回該數(shù)組結(jié)果就是會產(chǎn)生多個很大的數(shù)組。下面來用的生成器,代替原生,實(shí)現(xiàn)的方法。關(guān)閉一個生成器的注意事項

關(guān)于生成器

當(dāng)一個生成器被調(diào)用的時候,它返回一個可以被遍歷的對象.當(dāng)你遍歷這個對象的時候(例如通過一個foreach循環(huán)),PHP 將會在每次需要值的時候調(diào)用生成器函數(shù),并在產(chǎn)生一個值之后保存生成器的狀態(tài),這樣它就可以在需要產(chǎn)生下一個值的時候恢復(fù)調(diào)用狀態(tài)。

一旦不再需要產(chǎn)生更多的值,生成器函數(shù)可以簡單退出,而調(diào)用生成器的代碼還可以繼續(xù)執(zhí)行,就像一個數(shù)組已經(jīng)被遍歷完了。

Demo

標(biāo)準(zhǔn)的 range() 函數(shù)需要在內(nèi)存中生成一個數(shù)組包含每一個在它范圍內(nèi)的值,然后返回該數(shù)組, 結(jié)果就是會產(chǎn)生多個很大的數(shù)組。 比如,調(diào)用 range(0, 1000000) 將導(dǎo)致內(nèi)存占用超過 100 MB。

下面來用PHP的生成器,代替原生range,實(shí)現(xiàn)range的方法。

function xrange($start, $limit, $step = 1) {
    if ($start < $limit) {
        if ($step <= 0) {
            throw new LogicException("Step must be +ve");
        }

        for ($i = $start; $i <= $limit; $i += $step) {
            yield $i;
        }
    } else {
        if ($step >= 0) {
            throw new LogicException("Step must be -ve");
        }

        for ($i = $start; $i >= $limit; $i += $step) {
            yield $i;
        }
    }
}

Demo

echo "Single digit odd numbers from range():  ";
foreach (range(1, 9, 2) as $number) {
    echo "$number ";
}
echo "
";

echo "Single digit odd numbers from xrange(): ";
foreach (xrange(1, 9, 2) as $number) {
    echo "$number ";
}

關(guān)閉一個生成器的注意事項:

https://wiki.php.net/rfc/generators#closing_a_generator

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/21713.html

相關(guān)文章

  • 重讀PHP手冊筆記系列(二)

    摘要:通過注冊自動加載器,腳本引擎在出錯失敗前有了最后一個機(jī)會加載所需的類構(gòu)造函數(shù)和析構(gòu)函數(shù)構(gòu)造函數(shù)允行開發(fā)者在一個類中定義一個方法作為構(gòu)造函數(shù)。析構(gòu)函數(shù)會在到某個對象的所有引用都被刪除或者當(dāng)對象被顯式銷毀時執(zhí)行抽象類支持抽象類和抽象方法。 語言參考 1. 類型 1.1 簡介 showImg(https://segmentfault.com/img/bVbqlNJ?w=531&h=379);...

    馬龍駒 評論0 收藏0
  • 原生js替換jQuery各種方法-中文版

    摘要:本項目總結(jié)了大部分替代的方法,暫時只支持以上瀏覽器。返回指定元素及其后代的文本內(nèi)容。從服務(wù)器讀取數(shù)據(jù)并替換匹配元素的內(nèi)容。用它自己的方式處理,原生遵循標(biāo)準(zhǔn)實(shí)現(xiàn)了最小來處理。當(dāng)全部被解決時返回,當(dāng)任一被拒絕時拒絕。是創(chuàng)建的一種方式。 原文https://github.com/nefe/You-D... You Dont Need jQuery showImg(https://segmen...

    lylwyy2016 評論0 收藏0
  • 原生php導(dǎo)出csv文件

    摘要:附上結(jié)果圖片下圖為方法中導(dǎo)出的練習(xí)數(shù)據(jù),頭部引入除過都是封裝了的方法類,導(dǎo)出主要參考下面兩個方法。 require(./db/dbManager.php); require(./session.php); require(./department_utils.php); class ExportCSV{ function __construct(){ $thi...

    yankeys 評論0 收藏0
  • 原生php導(dǎo)出csv文件

    摘要:附上結(jié)果圖片下圖為方法中導(dǎo)出的練習(xí)數(shù)據(jù),頭部引入除過都是封裝了的方法類,導(dǎo)出主要參考下面兩個方法。 require(./db/dbManager.php); require(./session.php); require(./department_utils.php); class ExportCSV{ function __construct(){ $thi...

    antyiwei 評論0 收藏0

發(fā)表評論

0條評論

coolpail

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<