PHP戻り値
はじめに
関数は必須ではありませんが、本体の最後のステートメントとしてreturnを持つことができます。関数が呼び出されると、プログラムの制御は、関数ブロックの最後のステートメントが返されるかどうかに関係なく、本体ブロックでステートメントを実行した後、呼び出し環境に戻ります。 retunステートメントがない場合、controlは呼び出し元にNULL値を返します。 returnステートメントがexpression句で構成されている場合、expressionの値が返されます。関数は、スカラー型、配列、またはオブジェクトの値を1つだけ返すことができます。戻り値は、後続の処理のためにいくつかの変数に割り当てられる場合があります
リターン付き関数
次の例では、関数は引数として渡された2つの整数の合計を返します
例
<?php function add($var1, $var2){ $var3= $var1+$var2 ; return $var3; } $x=10; $y=20; $z=add($x,$y); echo "addition=$z"; ?>
出力
これにより、次の結果が得られます。 −
addition=30
配列を返す
関数は1つの値のみを返すことができます。ただし、複数の値の配列を返すことができます。次の例では、加算、減算、乗算、除算の配列を返す関数に2つの数値を渡します
例
<?php function result($var1, $var2){ $r1=$var1+$var2; $r2=$var1-$var2; $r3=$var1*$var2; $r4=$var1/$var2; return array("add"=>$r1,"sub"=>$r2,"multiply"=>$r3,"division"=>$r4); } $x=10; $y=20; $arr=result($x,$y); foreach ($arr as $k=>$v){ echo $k . "->" . $v . "\n"; } ?>
出力
これにより、次の結果が得られます。 −
add->30 sub->-10 multiply->200 division->0.5
参照による返品
引数を参照で渡すことができるのと同じように、関数も参照で返すことができます。そのためには、関数の名前の前に$記号を付ける必要があります。さらに、&記号も関数呼び出しで指定する必要があります
次の例では、myfunction()に静的配列があります。その要素の1つは参照によって返され、変数で受け入れられます。次に、変数の値が変更され、同じ関数が再度呼び出されます。関数内の配列は、変更された値を表示するはずです。
例
<?php function &myfunction(){ static $arr=[1,2,3,4,5]; echo "array elements: "; foreach ($arr as $i){ echo "$i "; } echo "\n"; return $arr[2]; } $var=&myfunction(); echo "returned by reference : $var\n"; $var=100; $var=&myfunction(); ?>
出力
これにより、次の結果が得られます。 −
array elements: 1 2 3 4 5 returned by reference : 3 array elements: 1 2 100 4 5
変数$xと$yの値は、swap()関数で交換されます。変数は参照によって渡されるため、変数は関数の外部でも変更された値を示します
戻り型のヒント(戻り型の宣言)
PHP 7以降では、引数の型を宣言できるのと同じように、返される変数/オブジェクトの型ヒントを指定できます。戻り型には、すべてのスカラー型、クラス、配列を使用できます
構文
//define a function with type hints for return value function myfunction($arg1, $arg2): type{ .. .. return $var; }
スカラー型、配列、クラス/インターフェイス、iterable、objectを含むすべての標準PHPデータ型は、関数宣言で戻り変数の型ヒントを提供するための有効な型です
例
<?php function add($x, $y): float{ return $x+$y; } $var=add(5,8); var_dump($var); ?>
出力
これにより、次の結果が得られます。 −
float(13)
strict_types =1でのdeclareステートメントの使用 データ型の強制を防ぎます
例
<?php declare (strict_types=1); function add($x, $y): int{ return $x+$y; } $var=add(5.5,8.8); var_dump($var); ?>
出力
これにより、次のように例外がスローされます-
PHP Fatal error: Uncaught TypeError: Return value of add() must be of the type integer, float returned
-
PHPのarray_count_values()関数
array_count_values()関数は、各値の出現回数を含む配列を返します。連想配列を返します。返される配列には、配列の値としてキーがあり、渡された値の数として値があります。 構文 array_count_values(arr) パラメータ arr − 値をカウントする配列。 戻る array_count_values()関数は、連想配列を返します。返される配列には、配列の値としてキーがあり、渡された値の数として値があります。 例 <?php $arr = array(Laptop,Keyboard,Mouse,Keyboard,Keyboar
-
Pythonで複数の値を返しますか?
Python関数は複数の値を返すことができます。これらの値は、変数に直接格納できます。関数は変数を返すように制限されていません。0、1、2、またはそれ以上の値を返すことができます。 これは、C++やJavaなどの他の多くのプログラミング言語では使用できない複数の値/変数を返すPythonのデフォルトのプロパティです。 関数から複数の値を返す場合は、要件に応じてタプル、リスト、またはディクショナリオブジェクトを返すことができます。 方法1:タプルを使用する def func(x): y0 = x+ 1 y1 = x * 3 &