PHPの収量

WBOY
リリース: 2024-08-29 12:56:31
オリジナル
331 人が閲覧しました

PHP の yield キーワードは、ジェネレーター関数の作成に使用されます。これは PHP の組み込みキーワードです。ジェネレーター関数は、単一の値を返す点を除き、通常の関数と同じです。ジェネレーターの yield キーワードは、ジェネレーター関数から返されるのに必要な多数の値を返します。 yield を含む関数はすべてジェネレータ関数です。ジェネレーター関数はイテレーターと同じで、foreach ループでループし、値が必要になるたびにジェネレーターは値を生成します。 yield キーワードは、実行を停止する代わりに、return キーワードと同じです。

広告 このカテゴリーの人気コース PHP 開発者 - 専門分野 | 8コースシリーズ | 3 つの模擬テスト

無料ソフトウェア開発コースを始めましょう

Web 開発、プログラミング言語、ソフトウェア テスト、その他

構文

yield $value;
ログイン後にコピー

パラメータ –

value – これはオプションではなく、返される値を指定します。

戻り値 – このメソッドの戻り値は、生成関数で返される必要がある値です。

PHP yield キーワードの仕組み

PHP の yield キーワードは、複数の値を返すか生成するためにジェネレーター関数で使用されます。ジェネレーター関数が呼び出されると、反復可能なイテレーター オブジェクトが返されます。このオブジェクトを foreach ループで反復すると、値が必要になるたびに PHP によってオブジェクトの反復メソッドが呼び出され、ジェネレーター関数が値を生成したときにジェネレーター関数の状態が保存され、その値が次の値の取得に再開されます。生成する値がない場合、ジェネレーターは単に終了し、配列の値がなくなると呼び出しコードは続行できます。

PHP の yield キーワードの例

さまざまな例を以下に示します:

例 #1 – 複数の値を生成する

次に、PHP の yield キーワードをより明確に理解するために、次の例で PHP コードを作成します。ここで、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 までの偶数を検索し、yield または return するために作成されます。出力でわかるように、反復ごとに値が 1 つずつ返され、同様に表示されます。

例 #2 – iterator_to_array() メソッド

次に、PHP yield キーワードを理解するために PHP コードを作成します。ここで、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の収量

上記のプログラムと同様に、2 から 10 までの偶数を検索して返すために gen_even_numbers() 関数が作成され、次に別の関数 call_gen() を使用して、yield from を使用して gen_even_numbers() 関数を呼び出します。キーはリセットされません。コードの後半では、反復によって 2 つの方法が実行されます。最初の方法は foreach ループを使用するもので、call_gen() 関数で生成される値を順番に反復するため、キーはリセットされず、2 2 4 6 8 10 10 として出力されます。 iterator_to_array() メソッドを使用しています。このメソッドはデフォルトでキー付き配列を返し、出力で確認できる予期せぬ結果が生じる可能性があります。

例 #3 – 参照生成関数の内部

次に、PHP の yield キーワードを理解するために PHP コードを作成します。ここで、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 キーワードは、ジェネレーター関数を作成するか、関数を返すために使用される組み込みキーワードです。

以上がPHPの収量の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
php
ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート