国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > PHP > 正文

PHP生成器功能與用法實例分析

2024-05-05 00:02:45
字體:
供稿:網(wǎng)友

本文實例講述了PHP生成器功能與用法。分享給大家供大家參考,具體如下:

1. 官方說明:生成器提供了一種更容易的方法來實現(xiàn)簡單的對象迭代,相比較定義類實現(xiàn) Iterator 接口的方式,性能開銷和復(fù)雜性大大降低。生成器允許你在 foreach 代碼塊中寫代碼來迭代一組數(shù)據(jù)而不需要在內(nèi)存中創(chuàng)建一個數(shù)組。

2. 生成器就像一個普通的自定義函數(shù)一樣, 和普通函數(shù)只返回一次不同的是, 生成器可以根據(jù)需要 yield 多次,以便生成需要迭代的值。

3. 代碼示例:

//未使用生成器echo '開始內(nèi)存:'.getMemory().'<br>';$nums = range(0,1000000);echo '結(jié)束內(nèi)存:'.getMemory().'<br>';//輸出結(jié)果//開始內(nèi)存:0.23M//結(jié)束內(nèi)存:130.31?//使用生成器echo '開始內(nèi)存:'.getMemory().'<br>';$nums = xrange(1000000);function xrange($total){  for ($i = 0; $i < $total; $i++) {    yield $i;  }}echo '結(jié)束內(nèi)存:'.getMemory().'<br>';//輸出結(jié)果//開始內(nèi)存:0.23M//結(jié)束內(nèi)存:0.23M

4. 實際應(yīng)用示例

/** * 大量數(shù)據(jù)生成示例 * @param int $page * @param int $limit * @return Generator */public function generator($page = 1,$limit = 50000){  while (true) {    echo "第{$page}次".'generator開始內(nèi)存:'.$this->getMemory().'<br>';    $start = ($page-1) * $limit;    $sql = "SELECT p.id,p.wh_code,p.goods_sn FROM p_product as p WHERE p.wh_code LIKE '%YB%' OR p.wh_code LIKE '%DZWH%' LIMIT {$start},{$limit} ";    $resultAll = db()->fetchAll($sql);    yield $resultAll; //生成器?    if (count($resultAll) != $limit) {      break;    }    echo "第{$page}次".'generator結(jié)束內(nèi)存:'.$this->getMemory().'<br>';    $page++;  }}    //測試生成器內(nèi)存消耗//    foreach ($this->generator() as $result) {//      var_dump($result[0]);//    }

希望本文所述對大家PHP程序設(shè)計有所幫助。

 


注:相關(guān)教程知識閱讀請移步到PHP教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 中江县| 方山县| 凭祥市| 肃北| 双辽市| 张家界市| 竹溪县| 三明市| 靖江市| 北碚区| 正安县| 栾城县| 扶绥县| 静乐县| 尼勒克县| 静安区| 收藏| 宜章县| 象州县| 宾川县| 视频| 南投市| 霍山县| 卓尼县| 无锡市| 临泉县| 新宾| 砚山县| 平江县| 九寨沟县| 原平市| 许昌市| 宜昌市| 永嘉县| 方正县| 普安县| 西和县| 西昌市| 高青县| 金湖县| 阜阳市|