摘要:標準的函數需要在內存中生成一個數組包含每一個在它范圍內的值,然后返回該數組結果就是會產生多個很大的數組。下面來用的生成器,代替原生,實現的方法。關閉一個生成器的注意事項
關于生成器
當一個生成器被調用的時候,它返回一個可以被遍歷的對象.當你遍歷這個對象的時候(例如通過一個foreach循環),PHP 將會在每次需要值的時候調用生成器函數,并在產生一個值之后保存生成器的狀態,這樣它就可以在需要產生下一個值的時候恢復調用狀態。
一旦不再需要產生更多的值,生成器函數可以簡單退出,而調用生成器的代碼還可以繼續執行,就像一個數組已經被遍歷完了。
Demo標準的 range() 函數需要在內存中生成一個數組包含每一個在它范圍內的值,然后返回該數組, 結果就是會產生多個很大的數組。 比如,調用 range(0, 1000000) 將導致內存占用超過 100 MB。
下面來用PHP的生成器,代替原生range,實現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 "; }
關閉一個生成器的注意事項:
https://wiki.php.net/rfc/generators#closing_a_generator
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/21713.html
摘要:通過注冊自動加載器,腳本引擎在出錯失敗前有了最后一個機會加載所需的類構造函數和析構函數構造函數允行開發者在一個類中定義一個方法作為構造函數。析構函數會在到某個對象的所有引用都被刪除或者當對象被顯式銷毀時執行抽象類支持抽象類和抽象方法。 語言參考 1. 類型 1.1 簡介 showImg(https://segmentfault.com/img/bVbqlNJ?w=531&h=379);...
摘要:本項目總結了大部分替代的方法,暫時只支持以上瀏覽器。返回指定元素及其后代的文本內容。從服務器讀取數據并替換匹配元素的內容。用它自己的方式處理,原生遵循標準實現了最小來處理。當全部被解決時返回,當任一被拒絕時拒絕。是創建的一種方式。 原文https://github.com/nefe/You-D... You Dont Need jQuery showImg(https://segmen...
摘要:附上結果圖片下圖為方法中導出的練習數據,頭部引入除過都是封裝了的方法類,導出主要參考下面兩個方法。 require(./db/dbManager.php); require(./session.php); require(./department_utils.php); class ExportCSV{ function __construct(){ $thi...
摘要:附上結果圖片下圖為方法中導出的練習數據,頭部引入除過都是封裝了的方法類,導出主要參考下面兩個方法。 require(./db/dbManager.php); require(./session.php); require(./department_utils.php); class ExportCSV{ function __construct(){ $thi...
閱讀 3503·2021-11-24 09:39
閱讀 781·2019-08-30 14:22
閱讀 3031·2019-08-30 13:13
閱讀 2310·2019-08-29 17:06
閱讀 2918·2019-08-29 16:22
閱讀 1255·2019-08-29 10:58
閱讀 2427·2019-08-26 13:47
閱讀 1628·2019-08-26 11:39