摘要:與標準的迭代器不同,生成器不要求類實現接口,從而減輕了類的負擔。生成器不能完成所有迭代器的操作。如果需要更多功能,例如在數據集中執行后腿,快進或查找操作,最好自己編寫類,實現接口,或者使用標準庫中某個原生的迭代器參考
PHP生成器是5.5.0引入的功能。
生成器實際上就是簡單的迭代器。
與標準的PHP迭代器不同,生成器不要求類實現Iterator接口,從而減輕了類的負擔。
生成器會根據需求計算產出迭代的值。而標準的PHP迭代器經常在內存中執行迭代操作,這要預先計算出數據集,性能較低。
如果使用特定的防護計算大量數據,可以使用生成器,即時計算并產出后續值,不占用內存。
創建生成器不能完成所有迭代器的操作。無法后退,快進,并且生成器是一次性的,無法對此迭代同一個生成器。
生成器從不返回值,只是產出值。
調用生成器函數時,PHP會反悔一個屬于Generator類的對象。這個對象是可以foreach迭代的。每次迭代,PHP要求這個實例計算并提供下一個要迭代的值。
每次產出一個值,生成器的內部狀態都會停頓。向生成器請求下一個值時,內部狀態才會恢復。這種停頓-恢復的狀態會一直持續下去。
使用上面的這個方法并沒有善用內存,使用生成器只會為一個整數分配內存。
再舉個例子:使用生成器處理CSV文件
這個例子中,生成器只會為CSV文件分配一行內存,而不是讀入整個文件到內存。
如果需要更多功能,例如在數據集中執行后腿,快進或查找操作,最好自己編寫類,實現Iterator接口(http://php.net/manual/class.iterator.php),或者使用PHP標準庫中某個原生的迭代器(http://php.net/manual/spl.iterators.php)
參考:
Modern PHP
http://bit.ly/ircmaxwell
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/21649.html
摘要:為了一探究竟,于是開啟了這次應用性能調優之旅。使用即時編譯器和都能輕輕松松的讓你的應用程序在不用做任何修改的情況下,直接提高或者更高的性能。 這是一份事后的總結。在經歷了調優過程踩的很多坑之后,我們最終完善并實施了初步的性能測試方案,通過真實的測試數據歸納出了 Laravel 開發過程中的一些實踐技巧。 0x00 源起 最近有同事反饋 Laravel 寫的應用程序響應有點慢、20幾個并...
摘要:在中,提示符可能是??蚣苁褂脕韴绦邪惭b及管理依賴。為了能訪問網頁,要啟動程序服務器。在大多數類系統中,包括,命令行提示符是符號。這兩個操作分別對應于的和,即創建和讀取。首個表單要在模板中編寫表單,可以使用表單構造器。 【摘要】自從ThinkSNS+不使用ThinkPHP框架而使用Laravel框架之后,很多人都說技術門檻抬高了,其實你與TS+的距離僅僅只是學習一個新框架而已,所以,我們...
摘要:所謂對稱加密,就是加密和解密使用同一秘鑰,這也是這種加密算法最顯著的缺點之一。非對稱加密算法由于對稱加密在通信加密領域的缺陷,年和提出了非對稱加密的概念。非對稱加密,其主要缺點之一就是慢,適合加密少量數據。 1. 加密的目的 加密不同于密碼,加密是一個動作或者過程,其目的就是將一段明文信息(人類或機器可以直接讀懂的信息)變為一段看上去沒有任何意義的字符,必須通過事先約定的解密規則才能將...
閱讀 3476·2021-11-19 09:40
閱讀 1492·2021-10-13 09:41
閱讀 2655·2021-09-29 09:35
閱讀 2710·2021-09-23 11:21
閱讀 1693·2021-09-09 11:56
閱讀 830·2019-08-30 15:53
閱讀 844·2019-08-30 15:52
閱讀 598·2019-08-30 12:47