91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

PHP生成器-動態生成內容的數組方法演示

發布時間:2020-04-03 15:33:02 來源:億速云 閱讀:302 作者:小新 欄目:編程語言

這篇文章主要為大家詳細介紹了PHP生成器-動態生成內容的數組方法演示,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下。

定義:

1.生成器:“動態生成內容的數組”,用到值的時候才去生產。

2.搭配使用:關鍵字 yield foreach

過程:

1.作為生成器的方法相當于定義了一個數組;

2.生成器中的 yield,每次出現相當于定義了一個數組中出現的值;

3.foreach 會遍歷生成器中所有的 yield 定義的值(某個被定義的值(表達式),只有在被用到的時候,當前yield同上一個yield之間的其他表達式才會被執行,當前yield之后的表達式不會被執行);

4.foreach 正常結束的話(不是break),判斷一下生成器中最后一個yield之后是否有其他表達式未執行完,是的話,執行之;

5.不同于線程,不是并行執行,只是在主業務邏輯和生成器之間來回切換執行,只節省了空間,時間沒省下來。

PHP生成器-動態生成內容的數組方法演示

設想使用場景:

1、取大數據文件,生成器中逐行讀取;

2、???

例子:

gen.php

 <?php
   function gen()
   {
       echo '生成器開始執行' . PHP_EOL;
      for ($i = 0; $i < 5; $i++) {
           echo '產生數據之前:' . $i  . PHP_EOL;
           yield $i; 
           echo '產生數據之后:' . $i  . PHP_EOL;
       }   
      echo '再來一個數據' . PHP_EOL;
      yield 5;
      echo '生成器執行結束' . PHP_EOL;
  }   
  $gen_func = gen();
  echo '生成器開始執行了嗎?' . PHP_EOL;
  foreach ($gen_func as $key  => $val) {
      echo '使用數據前' . PHP_EOL;
      echo '使用數據:' . $val . PHP_EOL;
      echo '使用數據后' . PHP_EOL;
      //if ($key >= 4) {
          //break;
      //} 
  }

執行結果:

php gen.php
生成器開始執行了嗎?
生成器開始執行
產生數據之前:0
使用數據前
使用數據:0
使用數據后
產生數據之后:0
產生數據之前:1
使用數據前
使用數據:1
使用數據后
產生數據之后:1
產生數據之前:2
使用數據前
使用數據:2
使用數據后
產生數據之后:2
產生數據之前:3
使用數據前
使用數據:3
使用數據后
產生數據之后:3
產生數據之前:4
使用數據前
使用數據:4
使用數據后
產生數據之后:4
再來一個數據
使用數據前
使用數據:5
使用數據后
生成器執行結束

部分執行過程解讀:

1、14行并沒有調用生成器gen(),只是做了定義;

2、進入 foreach 循環后,開始調用gen();

3、$val 需要值的時候,記住當前位置a,執行生成器;

4、執行到 yield 定義的地方,取到值了,記住當前位置b,返回位置a;

5、循環3、4兩步;

6、循環結束,執行完 yield 最后一次定義的地方的之后的剩下部分;

7、去掉20、21、22行的注釋后執行,"使用數據:4 使用數據后",就不再有其他輸出。

其他(僅驗證了PHP7.1.14版本)

1、value);//YES value;//NO

2、可以使用yield val;

3、PHP7之后,yield from 可以調用生成器、數組、使用return等。

以上就是PHP生成器-動態生成內容的數組方法演示的簡略介紹,當然詳細使用上面的不同還得要大家自己使用過才領會。如果想了解更多,歡迎關注億速云行業資訊頻道哦!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

鹤山市| 武城县| 宕昌县| 金堂县| 甘泉县| 隆昌县| 长顺县| 城口县| 韶关市| 库尔勒市| 宜川县| 莲花县| 扬州市| 射洪县| 肇州县| 新营市| 北海市| 巴青县| 银川市| 金门县| 顺昌县| 盖州市| 沧州市| 和林格尔县| 阿城市| 白山市| 黄浦区| 万荣县| 福海县| 托里县| 漳浦县| 永清县| 伽师县| 北流市| 体育| 潮州市| 那坡县| 余姚市| 延庆县| 贵州省| 溧水县|