日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

php生成器詳細(xì)講解

瀏覽:226日期:2022-06-06 08:41:29
目錄
  • 一、生成器的概念
  • 二、生成器的優(yōu)點(diǎn)
  • 三、生成器語(yǔ)法
  • 四、生成器的簡(jiǎn)單實(shí)例
  • 五、生成器簡(jiǎn)單實(shí)際應(yīng)用

一、生成器的概念

生成器提供了一種更容易的方法來(lái)實(shí)現(xiàn)簡(jiǎn)單的對(duì)象迭代,生成器允許你在 foreach 代碼塊中寫(xiě)代碼來(lái)迭代一組數(shù)據(jù)而不需要在內(nèi)存中創(chuàng)建一個(gè)數(shù)組, 那會(huì)使你的內(nèi)存達(dá)到上限,或者會(huì)占據(jù)可觀的處理時(shí)間。相反,你可以寫(xiě)一個(gè)生成器函數(shù),就像一個(gè)普通的自定義函數(shù)一樣, 和普通函數(shù)只返回一次不同的是, 生成器可以根據(jù)需要 yield 多次,以便生成需要迭代的值。

二、生成器的優(yōu)點(diǎn)

1、生成器會(huì)對(duì)PHP應(yīng)用的性能有非常大的影響

2、PHP代碼運(yùn)行時(shí)節(jié)省大量的內(nèi)存

3、比較適合計(jì)算大量的數(shù)據(jù)

三、生成器語(yǔ)法

生成器函數(shù)的核心是yield關(guān)鍵字。它最簡(jiǎn)單的調(diào)用形式看起來(lái)像一個(gè)return申明,不同之處在于普通return會(huì)返回值并終止函數(shù)的執(zhí)行,而yield會(huì)返回一個(gè)值給循環(huán)調(diào)用此生成器的代碼并且只是暫停執(zhí)行生成器函數(shù)。

四、生成器的簡(jiǎn)單實(shí)例

我們都知道php中有一個(gè)range函數(shù),他的作用是創(chuàng)建一個(gè)包含指定范圍的元素的數(shù)組,他的基本語(yǔ)法為range(low,high,step),表示包含從 low 到 high (包含 low 和 high)之間的整數(shù)或字符。如果 high 比 low 小,則返回反序的數(shù)組,step表示步長(zhǎng)默認(rèn)步長(zhǎng)為1

例如:

range(0,10)

輸出結(jié)果為:

Array ( [0] => 0 [1] => 1 [2] => 2 [3] => 3 [4] => 4 [5] => 5 [6] => 6 [7] => 7 [8] => 8 [9] => 9 [10] => 10 )

但是如果我們想要獲取1-10000000之間所有的數(shù)組的話,調(diào)用range(0,10000000)時(shí)將導(dǎo)致占用內(nèi)存耗盡

這時(shí)候我們就可以使用php的生成器來(lái)實(shí)現(xiàn)

1)編寫(xiě)一個(gè)生成器函數(shù)

public function rangeText($start, $limit, $step = 1)
{
    if ($start < $limit) {
if ($step <= 0) {
    throw new InvalidConfigException("步長(zhǎng)至少大于0");
}
for ($i = $start; $i <= $limit; $i += $step) {
    yield $i;
}
    } else {
if ($step >= 0) {
    throw new InvalidConfigException("步長(zhǎng)至少大于0");
}
for ($i = $start; $i >= $limit; $i += $step) {
    yield $i;
}
    }
}

2)調(diào)用生成器函數(shù)

foreach ($this->rangeText(0,10000000) as $number) {
    echo $number ."<br />";
}

調(diào)用生成函數(shù)之后我們就可以將0-10000000之間的所有數(shù)打印出來(lái)

五、生成器簡(jiǎn)單實(shí)際應(yīng)用

PHP開(kāi)發(fā)很多時(shí)候都要讀取大文件,比如csv文件、text文件,或者一些日志文件。這些文件如果很大,比如10個(gè)G。這時(shí),直接一次性把所有的內(nèi)容讀取到內(nèi)存中計(jì)算不太現(xiàn)實(shí)。那么這里生成器就可以派上用場(chǎng)

例:使用生成器讀取txt文件

1)編寫(xiě)一個(gè)讀取txt文件的生成器函數(shù)

public function readTest($txt)
{
    //打開(kāi)文件
    $handle = fopen($txt, "rb");
    //檢測(cè)是否已到達(dá)文件末尾
    while (feof($handle)===false) {
//使用生成器逐行讀取文件數(shù)據(jù)
yield   fgets($handle);
    }
    //關(guān)閉打開(kāi)的文件
    fclose($handle);
}

2)調(diào)用讀取txt文件的生成器函數(shù)

foreach ($this->readTest("test.txt") as $key=>$value) {
    echo $value."<br />";
}

這時(shí)候我們就可以在瀏覽器看到txt文件中內(nèi)容了

到此這篇關(guān)于php生成器詳細(xì)講解的文章就介紹到這了,更多相關(guān)php生成器內(nèi)容請(qǐng)搜索以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持!

標(biāo)簽: PHP
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
亚洲网站视频| 国产精品女主播一区二区三区| 亚洲一区二区三区高清不卡| 精品九九在线| 亚洲欧美日本国产| 女人天堂亚洲aⅴ在线观看| 国产精品99免费看| 亚洲福利久久| 欧美1区二区| 欧美a级一区二区| 国产亚洲一区二区三区啪| 激情久久久久久久| 日韩视频精品在线观看| 国产一区二区三区日韩精品 | 国产亚洲在线观看| 99在线观看免费视频精品观看| 久久国产免费| www在线观看黄色| www.com.cn成人| 中文在线а√在线8| 青青青免费在线视频| 激情黄产视频在线免费观看| 日韩欧美综合| 亚洲国产一区二区三区在线播放 | 国产一区一一区高清不卡| 国语精品一区| 欧洲在线一区| 99xxxx成人网| 91亚洲精品视频在线观看| 嫩草伊人久久精品少妇av杨幂| zzzwww在线看片免费| 欧美成人基地 | 国产精品综合| 福利一区视频| 婷婷亚洲五月| 亚洲国产成人精品女人| 日韩大片在线播放| 日韩国产一区二| 久久精品动漫| 国产一区二区三区国产精品| 国产精品亚洲欧美| 精品一区视频| 欧美日韩国产在线一区| 国产精品蜜芽在线观看| 在线观看精品| 日本免费一区二区视频| 红桃视频亚洲| 欧美日一区二区三区在线观看国产免 | 午夜亚洲福利在线老司机| 亚洲精品乱码| 国产va免费精品观看精品视频| 久久久久免费| 亚洲激情中文在线| 日韩高清电影一区| 亚洲黄色免费av| 在线精品观看| 精品久久91| 中文精品视频| 欧美国产亚洲精品| 99视频+国产日韩欧美| 91伊人久久| 今天的高清视频免费播放成人| 美女精品网站| 精品国产第一福利网站| 日韩不卡免费高清视频| 欧美三区四区| 婷婷综合六月| 亚洲精品影视| 欧美精品日日操| 日韩国产一区二| 久久精品国产亚洲夜色av网站| 日本不卡视频在线观看 | 国产美女亚洲精品7777| 国产一区日韩一区| 欧美国产中文高清| 国产亚洲在线| 久久免费黄色| 精品91福利视频| 亚洲精品麻豆| 中国字幕a在线看韩国电影| 久久国产精品免费一区二区三区| 欧美在线亚洲综合一区| 国产成人精选| 国产欧美88| 亚洲精品伦理| 黄色成人在线网址| 热三久草你在线| 欧美aaaaaa午夜精品| 中文在线日韩| 婷婷亚洲五月色综合| 国产精品不卡| 免费看一区二区三区| 中文字幕亚洲精品乱码| 一区视频在线| 国内精品麻豆美女在线播放视频| 欧美一区网站| 四虎在线精品| 麻豆成人在线| 影院欧美亚洲| 欧美日韩水蜜桃| 一本大道色婷婷在线| 国产不卡av一区二区| 欧美黑人做爰爽爽爽| 日韩精品免费视频人成| 午夜精品网站| 影视先锋久久| 亚洲四虎影院| 成人欧美一区二区三区的电影| 美女久久精品| 国产欧美一级| 91精品日本| 日韩精品一区二区三区中文字幕| 亚洲色图综合| 亚洲精品一级| 亚欧成人精品| 日本在线不卡视频| 日韩高清在线不卡| 日本精品另类| 噜噜噜躁狠狠躁狠狠精品视频| 国产精品久久久久久久免费观看| 精品精品久久| 国产情侣一区在线| 日韩二区三区四区| 国产欧美日本| 视频一区欧美精品| 亚洲三级网址| 国产精品www.| 成人国产综合| 亚洲无线一线二线三线区别av| 五月国产精品| 亚洲精品一二| 奇米亚洲欧美| 国产极品嫩模在线观看91精品| 国产精品久久久免费| 嫩草伊人久久精品少妇av杨幂| 国产极品久久久久久久久波多结野| 国产精品视频一区视频二区| 麻豆精品蜜桃视频网站| 国产精品99视频| 久久免费福利| 日韩欧美自拍| 国产亚洲精品久久久久婷婷瑜伽| 丝袜a∨在线一区二区三区不卡| 在线观看亚洲精品福利片| 啪啪亚洲精品| 久久精品女人| 久久久噜噜噜| 亚洲免费中文| 欧美亚洲三区| 麻豆精品一区二区综合av| 中文在线а√天堂| 亚洲成人精选| 日韩一区二区三区精品视频第3页| 青青草精品视频| 欧美激情视频一区二区三区在线播放| 国产一区精品福利| 国产一区日韩欧美| 亚洲精品乱码久久久久久蜜桃麻豆 | 爽好久久久欧美精品| 日韩精品一区二区三区中文| 久久久久九九精品影院| 在线视频观看日韩| 影音先锋久久精品| 国产乱人伦丫前精品视频| 红杏一区二区三区| 亚洲激情黄色| 久久激五月天综合精品| 成人亚洲一区二区| 国产视频亚洲| 国产精品久久久久久久久久齐齐 | 国产精品一区二区精品| 日韩欧美视频专区| 久久福利一区| 久久不卡日韩美女| 国产一区清纯| 四虎在线精品| 亚洲成人av观看| 欧美偷窥清纯综合图区| 国产免费成人| 国产精品a久久久久| 国产不卡精品在线| 亚洲美女久久精品| 成人日韩在线观看| 婷婷综合六月| 欧美女激情福利| 国产精品免费99久久久| 国产 日韩 欧美一区| 欧美资源在线| 精品亚洲a∨| 日韩影院在线观看| 四虎国产精品免费观看| 亚洲精选成人| 久久精品青草| 国产欧美丝祙| 亚洲一区黄色| 久久uomeier| 国产精品色在线网站| 99热免费精品| 亚洲三级欧美| 国产日产一区|