PHP の yield キーワードは、ジェネレーター関数の作成に使用されます。これは PHP の組み込みキーワードです。ジェネレーター関数は、単一の値を返す点を除き、通常の関数と同じです。ジェネレーターの yield キーワードは、ジェネレーター関数から返されるのに必要な多数の値を返します。 yield を含む関数はすべてジェネレータ関数です。ジェネレーター関数はイテレーターと同じで、foreach ループでループし、値が必要になるたびにジェネレーターは値を生成します。 yield キーワードは、実行を停止する代わりに、return キーワードと同じです。
広告 このカテゴリーの人気コース PHP 開発者 - 専門分野 | 8コースシリーズ | 3 つの模擬テスト無料ソフトウェア開発コースを始めましょう
Web 開発、プログラミング言語、ソフトウェア テスト、その他
構文
yield $value;
パラメータ –
value – これはオプションではなく、返される値を指定します。
戻り値 – このメソッドの戻り値は、生成関数で返される必要がある値です。
PHP の yield キーワードは、複数の値を返すか生成するためにジェネレーター関数で使用されます。ジェネレーター関数が呼び出されると、反復可能なイテレーター オブジェクトが返されます。このオブジェクトを foreach ループで反復すると、値が必要になるたびに PHP によってオブジェクトの反復メソッドが呼び出され、ジェネレーター関数が値を生成したときにジェネレーター関数の状態が保存され、その値が次の値の取得に再開されます。生成する値がない場合、ジェネレーターは単に終了し、配列の値がなくなると呼び出しコードは続行できます。
さまざまな例を以下に示します:
次に、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 "); } ?>
出力:
上記のプログラムと同様に、gen_even_numbers() 関数は、反復呼び出し時に 2 から 10 までの偶数を検索し、yield または return するために作成されます。出力でわかるように、反復ごとに値が 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; } } // 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())); ?>
出力:
上記のプログラムと同様に、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() メソッドを使用しています。このメソッドはデフォルトでキー付き配列を返し、出力で確認できる予期せぬ結果が生じる可能性があります。
次に、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 "); } ?>
出力:
上記のプログラムでは、gen_even_numbers() 関数は接頭辞「&」が付いているため参照関数です。これは、2 から 10 までの偶数を検索して返すために使用されます。この関数の戻りオブジェクトをさらに反復し、そのたびに、反復された値が再び「&」の接頭辞が付けられた変数に格納されます。
PHP yield キーワードは、ジェネレーター関数を作成するか、関数を返すために使用される組み込みキーワードです。
以上がPHPの収量の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。