というわけで、ユーザー定義関数の戻り値というのはどうやら、原則1つらしく。

function hoge(){
return $hoge;
}

というような感じで、通常一つ帰ってくるのです。

そんなときに実は複数の値が帰ってきてほしいのアタイというときのちょっとしたテクニックです。

まず、オーソドックスなやり方として、戻り値を配列にするというやり方です。

function hoge2(){
return array(“a”,”b”);
}

と、いうようににすれば、hoge2()の結果が配列に入って戻ってくるので、それを分解して値を二つ使うことができる。

このやり方は、たくさんの値が戻ってきたり、数が決まっていない場合だとか、汎用な関数をつくるような場合には必須。

だけども、戻り値は2個とか3個の少数で何が戻ってくるか決まっている場合は、いちいち配列を分解して取り出すのがめんどくさい、いや、スマートじゃない。という場合は、参照渡しを利用します。

function hoge3(&$data1,&$data2){
$data1 = “a”;
$data2 = “b”;
return true;
}

というように、引数の前に『&』をつけて渡してあげると、関数を呼び出した時に渡した$data1,$data2は関数内で処理をされた情報が反映されるというやり方です。この方法を応用すると、、

function hoge($test,&$test2){
//$testの中身がbbbだった場合には、$testをaaaに変更してtureを返す
if($test == “bbb”){
$test = “aaa”;
$test2 = “ccc”;
return true;
}else{
return false;
}
}

————-

if(hoge($test,$test2)){
//$testの中身がbbbだった場合に,$test2を表示する
echo $test2.”<br>”;
}else{
//$testの中身がbbbじゃなかった場合には$testを表示する
echo “$test.”<br>”;
}

というような、戻り値がtrue/falseでほしいときに内部で処理した関するを同じ名前で使うことが可能になるわけです。配列を分解するよりは多少はスマートじゃないですか?
もちろん、この参照渡しの変数を配列にすることも可能なので、ユーザー定義関数の内外で変数名を共有するために使うことも可能です。(むしろそれが参照渡しの本来の使用方法だと思いますが)

まぁ、きっかけは何にしろ、ユーザー定義関数の使い勝手がひろがりますね、というか、広がりました。

どのぐらい広がったかというと、ウサギ小屋から犬小屋ぐらい?
笑う

[関連性があるかもしれない記事]

  1. PHPでOOP
  2. 別のWindowにPOSTを渡すのだ!
  3. [MTカスタマイズメモ] WYSIWYGエディタに画像管理機能がついた
  4. Flash謎のおまじない
  5. PHP+XMLメモ