PHP
 Computer >> コンピューター >  >> プログラミング >> PHP

PHPジェネレーター。


はじめに

foreachなどのループ構造を使用して大量のデータコレクションをトラバースする 大容量のメモリとかなりの処理時間が必要になります。 ジェネレーターを使用 これらのオーバーヘッドなしでデータのセットを反復することが可能です。ジェネレーター関数は通常の関数に似ています。ただし、ジェネレータは関数内のreturnステートメントの代わりに、利回りを使用します 繰り返される値を提供するために繰り返し実行されるキーワード。

イールドキーワードは、ジェネレータメカニズムの中心です。その使用法はreturnに似ているように見えますが、関数の実行を停止することはありません。反復の次の値を提供し、関数の実行を一時停止します。

歩留まり値

forループは、ループ変数の各値がジェネレーター関数内で使用されることを示します

<?php
function squaregenerator(){
   for ($i=1; $i<=5; $i++){
      yield $i*$i;
   }
}
$gen=squaregenerator();
foreach ($gen as $val){
   echo $val . " ";
}
?>

foreachステートメントが初めて$valを表示しようとすると、squaregeneratorは最初の要素を生成し、$ iを保持し、foreachが次の反復を行うまで実行を一時停止します。出力は通常のforeachループに似ています

出力

1 4 9 16 25

PHPのrange() 関数は、各数値の間に$ stepの間隔を置いて、$startから$stopまでの整数のリストを返します。次のプログラムは、range()をジェネレーターとして実装します

<?php
function rangegenerator($start, $stop, $step){
   for ($i=$start; $i<=$stop; $i+=$step){
      yield $i;
   }
}
foreach (rangegenerator(2,10,2) as $val){
   echo $val . " ";
}
?>

出力

出力はrange(2,20,2)に似ています

2 4 6 8 10

連想配列はジェネレーターとして実装することもできます

<?php
function arrgenerator($arr){
   foreach ($arr as $key=>$val){
      yield $key=>$val;
   }
}
$arr=array("one"=>1, "two"=>2, "three"=>3, "four"=>4);
$gen=arrgenerator($arr);
foreach ($gen as $key=>$val)
echo $key . "=>" . $val . "\n";
?>

出力

one=>1
two=>2
three=>3
four=>4

  1. PHP log()関数

    定義と使用法 ログ ()関数は、数値の自然対数を計算します。 対数は、対数の逆数です。 10 2の場合 =100、それはlog 10を意味します 100=2。自然対数はオイラー数eで計算されます ベースとして。 PHPでは、事前定義された定数 M_E 2.7182818284590452354であるeの値を与える たとえば、exp(4.60517018599)=100(e 4.60517018599 とも同じです) =100)。したがって、log e 100 =4.60517018599 PHPでは、 log e log()で表されます 関数 構文 log ( f

  2. PHP is_nan()関数

    定義と使用法 NAN 「NotANumber」の略です。 is_nan ()関数は、引数が数値でないかどうかをチェックします。 構文 is_nan ( float $val ) : bool パラメータ Sr.No パラメータと説明 1 val 無限かどうかを検証する値 戻り値 PHPのis_nan()関数は、valが「数値ではない」場合はTRUEを返し、そうでない場合はFALSEを返します。 PHPバージョン この関数は、PHPバージョン4.x、PHP 5.x、およびPHP7.xで使用できます。 例 次の例は、100がNANとして適格