首頁  >  文章  >  後端開發  >  PHP 產量

PHP 產量

WBOY
WBOY原創
2024-08-29 12:56:31306瀏覽

PHP的yield關鍵字用於建立生成器函數。它是 PHP 中的內建關鍵字。生成器函數與普通函數相同,除了傳回單一值之外,生成器yield關鍵字根據生成器函數傳回的需要傳回多個值。任何包含yield的函數都是生成器函數。 Generator函數與迭代器相同,都是透過foreach循環進行循環,每次需要一個值時,生成器就會產生一個值; yield 關鍵字與 return 關鍵字相同,只不過不是停止執行。

廣告 該類別中的熱門課程 PHP 開發人員 - 專業化 | 8 門課程系列 | 3次模擬測驗

開始您的免費軟體開發課程

網頁開發、程式語言、軟體測試及其他

文法

yield $value;

參數 –

value – 這不是可選的,它指定要傳回的值。

傳回值 – 此方法的回傳值是產生函數中需要傳回的值。

PHP Yield 關鍵字的工作原理

PHP的yield關鍵字在生成器函數中使用來傳回或產生多個值。當生成器函數被呼叫時,它會傳回一個可以迭代的迭代器物件。當我們透過foreach 循環迭代這個物件時,每次需要一個值時,PHP 都會呼叫該物件的迭代方法,然後當生成器函數產生一個值時,生成器函數的狀態將被保存,並恢復以取得下一個值。當沒有要產生的值時,生成器就會退出,並且呼叫程式碼可以在陣列用完值時繼續。

PHP Yield 關鍵字的範例

下面提到了不同的例子:

範例#1 – 產生多個值

接下來,我們編寫 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 ");
}
?>

輸出:

PHP 產量

如上面的程序,建立了 gen_even_numbers() 函數來找出 2 到 10 之間的偶數,並在迭代呼叫時產生或傳回。在每次迭代中,它都會一一返回值,並且這些值也會顯示出來,正如我們在輸出中看到的那樣。

範例 #2 – iterator_to_array() 方法

接下來,我們編寫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()));
?>

輸出:

PHP 產量

如上面的程序,建立了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() 方法,該方法預設傳回一個鍵控數組,可能會導致意外結果,我們可以在輸出中看到。

範例 #3 – 參考產生器函數內部

接下來,我們寫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 ");
}
?>

輸出:

PHP 產量

在上面的程式中,gen_even_numbers()函數是一個參考函數,因為它的前綴是「&」;它用於尋找並傳回 2 到 10 之間的偶數。進一步迭代該函數的返回對象,每次迭代的值都儲存到一個變數中,該變數再次以“&”為前綴。

結論

PHP的yield關鍵字是一個內建關鍵字,用於建立生成器函數或回傳a。

以上是PHP 產量的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
上一篇:PHP 訂單()下一篇:PHP 訂單()