他の言語では難しいのですが、PHPでは関数の戻り値を配列(array)で行い、 結果をlist関数で受けることにより複数の戻り値の様になります。
先ずは、list関数についてみてみます。 以下のソースを見て下さい。
1 2 3 4 5 | <?php $arr = array ( "111" , "222" , "333" ); list( $d1 , $d2 , $d3 ) = $arr ; echo $d1 . "," . $d2 . "," . $d3 ; ?> |
結果は、変数 $d1, $d2, $d3 に配列のそれぞれの値が順番に入るので以下の表示になります。
1 | 111,222,333 |
これを参考にして関数の戻り値を複数にしてみます。
1 2 3 4 5 6 7 8 9 10 11 | <?php //配列での戻り値のテスト関数 function getTest(){ $arr = array ( "111" , "222" , "333" ); return $arr ; } //戻り値が配列の関数から値の取得 list( $ret1 , $ret2 , $ret3 ) = getTest(); echo $ret1 . ',' . $ret2 . ',' . $ret3 ; ?> |
関数の戻り値を list関数で受けることで、3個の変数にばらすことができます。
(この結果の表示は先ほどのものと同様です。)
そこで、関数を少し複雑にして、戻り値を1個の数値データと、配列データを戻してみます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <?php //配列での戻り値のテスト関数 function getTest(){ $arr = array ( "111" , "222" , "333" ); $cnt = count ( $arr ); return array ( $cnt , $arr ); } //戻り値が配列の関数から値の取得 list( $retc , $retarr ) = getTest(); echo "<pre>" ; print_r( $retc ); echo "<br />" ; print_r( $retarr ); echo "</pre>" ; ?> |
関数の中身は、配列データを入れ子にして戻り値にしています。配列の中身がさらに配列でも入れられるのでこの様なことができます。
データベースから一連のデータを取得する場合に、データ件数とそのレコードデータを返す場合に使えると思います。
上のソースの結果は以下の様になります。
1 2 3 4 5 6 7 | 3 Array ( [0] => 111 [1] => 222 [2] => 333 ) |
ショッピングサイト一通りを最初から自分で作ってみることで、PHPでのシステム開発を学べる入門書です。
コメント