成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

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

coolpail / 3528人閱讀

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

關(guān)于生成器

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

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

Demo

標(biāo)準(zhǔn)的 range() 函數(shù)需要在內(nèi)存中生成一個(gè)數(shù)組包含每一個(gè)在它范圍內(nèi)的值,然后返回該數(shù)組, 結(jié)果就是會(huì)產(chǎn)生多個(gè)很大的數(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)閉一個(gè)生成器的注意事項(xiàng):

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

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

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

相關(guān)文章

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

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

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

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

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

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

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

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

    antyiwei 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

coolpail

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<