PHP的yield關鍵字用於建立生成器函數。它是 PHP 中的內建關鍵字。生成器函數與普通函數相同,除了傳回單一值之外,生成器yield關鍵字根據生成器函數傳回的需要傳回多個值。任何包含yield的函數都是生成器函數。 Generator函數與迭代器相同,都是透過foreach循環進行循環,每次需要一個值時,生成器就會產生一個值; yield 關鍵字與 return 關鍵字相同,只不過不是停止執行。
廣告 該類別中的熱門課程 PHP 開發人員 - 專業化 | 8 門課程系列 | 3次模擬測驗開始您的免費軟體開發課程
網頁開發、程式語言、軟體測試及其他
文法
yield $value;
參數 –
value – 這不是可選的,它指定要傳回的值。
傳回值 – 此方法的回傳值是產生函數中需要傳回的值。
PHP的yield關鍵字在生成器函數中使用來傳回或產生多個值。當生成器函數被呼叫時,它會傳回一個可以迭代的迭代器物件。當我們透過foreach 循環迭代這個物件時,每次需要一個值時,PHP 都會呼叫該物件的迭代方法,然後當生成器函數產生一個值時,生成器函數的狀態將被保存,並恢復以取得下一個值。當沒有要產生的值時,生成器就會退出,並且呼叫程式碼可以在陣列用完值時繼續。
下面提到了不同的例子:
接下來,我們編寫 PHP 程式碼,透過以下範例更清楚地理解 PHP Yield 關鍵字,其中 Yield 關鍵字用於從生成器函數產生多個值,如下所示 –
代碼:
<?php // creating function to generate even numbers in between 2 to 10 function gen_even_numbers() { for ($i = 2; $i <= 10; $i+=2) { // Note that $i is preserved between yields. yield $i; } } // calling the gen_even_numbers function $generator = gen_even_numbers(); // iterating over the yeilded values of the gen_even_numbers function print( " The yeilded values of the generator function are : \n "); foreach ($generator as $value) { print( " $value\n "); } ?>
輸出:
如上面的程序,建立了 gen_even_numbers() 函數來找出 2 到 10 之間的偶數,並在迭代呼叫時產生或傳回。在每次迭代中,它都會一一返回值,並且這些值也會顯示出來,正如我們在輸出中看到的那樣。
接下來,我們編寫PHP程式碼來理解PHP的yield關鍵字,其中yield關鍵字用於從生成器函數產生多個值,並且該生成器函數在另一個生成器函數內部調用,如下所示–
代碼:
<?php // creating function to generate even numbers in between 2 to 10 function gen_even_numbers() { for ($i = 2; $i <= 10; $i+=2) { // Note that $i is preserved between yields. yield $i; } } // creating function to call gen_even_numbers function function call_gen() { yield 2; yield from gen_even_numbers(); yield 10; } // calling the call_gen function $generator = call_gen(); // iterating over the yeilded values of the call_gen function print( " The yeilded values of the generator function by foreach loops are : \n "); foreach ($generator as $value) { print( " $value\n "); } print("<br>"); print( "The yeilded values of the generator function by iterator_to_array are : \n "); var_dump(iterator_to_array(call_gen())); ?>
輸出:
如上面的程序,建立了gen_even_numbers() 函數來尋找並傳回2 到10 之間的偶數,然後使用另一個函數call_gen() 透過使用yield from 來呼叫gen_even_numbers() 函數,其中不重設按鍵。在程式碼的後面,迭代以兩種方式執行。第一種方法是使用 foreach 循環,它在 call_gen() 函數中產生值時會依序迭代值,因此不會重設鍵並取得輸出為 2 2 4 6 8 10 10。使用 iterator_to_array() 方法,該方法預設傳回一個鍵控數組,可能會導致意外結果,我們可以在輸出中看到。
接下來,我們寫PHP程式碼來了解PHP的yield關鍵字,其中yield關鍵字用來引用生成函數內部,如下 –
代碼:
<?php // creating function to generate even numbers in between 2 to 10 function &gen_even_numbers() { $i = 2; while($i <= 10) { // yield does not come out from the loop or function yield $i; $i+=2; } } // calling the gen_even_numbers function $generator = gen_even_numbers(); // iterating over the yeilded values of the call_gen function print( " The yeilded values of the reference generator function are : \n "); foreach ($generator as &$value) { print( " $value\n "); } ?>
輸出:
在上面的程式中,gen_even_numbers()函數是一個參考函數,因為它的前綴是「&」;它用於尋找並傳回 2 到 10 之間的偶數。進一步迭代該函數的返回對象,每次迭代的值都儲存到一個變數中,該變數再次以“&”為前綴。
PHP的yield關鍵字是一個內建關鍵字,用於建立生成器函數或回傳a。
以上是PHP 產量的詳細內容。更多資訊請關注PHP中文網其他相關文章!