1.yield是函數內外,迴圈內外溝通用的 , 當你的函數需要返回一個大數組 , 迴圈的時候需要遍歷這個大數組時 , 並且需要多次遍歷這個函數的返回值 , 這個是有用的 2.當我也是只需要在一次迴圈中就可以處理完所有的事情時 , 這個就沒啥用 在函數內迴圈的時候 , 會暫停住 , 回到我的外層迴圈里 ...
1.yield是函數內外,迴圈內外溝通用的 , 當你的函數需要返回一個大數組 , 迴圈的時候需要遍歷這個大數組時 , 並且需要多次遍歷這個函數的返回值 , 這個是有用的
2.當我也是只需要在一次迴圈中就可以處理完所有的事情時 , 這個就沒啥用
<?php $start=memory_get_usage(); function readTxt(){ $handle = fopen("./2018-12-awk-uniq.txt", 'rb'); while (feof($handle)===false) { yield fgets($handle); echo "\n4:***************\n"; } fclose($handle); } foreach (readTxt() as $key => $value) { echo "1:".$value; echo "2:=================\n"; echo "3:".(memory_get_usage()-$start); }
在函數內迴圈的時候 , 會暫停住 , 回到我的外層迴圈里來 , 註意看輸出的順序
當然如果我在讀取一行數據的迴圈里 , 把所有工作都做完 , 這個yield就不需要了 ,起到個傳遞的作用