WordPressプラグインを作っている中で、ユーザー定義関数から複数の戻り値が欲しい場面がありました。
しかし困ったことに、phpのユーザー定義関数は基本的に結果を一つしか返すことができません。
少し強引な手段ではありますが、配列にまとめることで「擬似的に」複数の結果を返すことができたのでメモしておきます。
<?php
function animals_cry() {
$cry = array(
'woof',
'meow',
'tweet',
'squeek',
);
return $cry;
}
list( $dog, $cat, $bird, $mouse ) = animals_cry();
echo <<< EOF
<p>Dog goes "$dog"</p>
<p>Cat goes "$cat"</p>
<p>Bird goes "$bird"</p>
<p>And mouse goes "$mouse"</p>
EOF;
?>
出力結果
Dog goes “woof”
Cat goes “meow”
Bird goes “tweet”
And mouse goes “squeek”
ちなみに要素の中から特定の一つだけが欲しい場合も、以下のように書けば問題なく取得できますよ。
list( , $cat ) = animals_cry();// 2番目の要素が欲しいので、1番目の要素を空にする
echo '<p>When I say "' . $cat . '", my cat meows together.</p>';
出力結果
When I say “meow”, my cat meows together.
phpに限らずプログラミングをする際、ユーザー定義関数の利用はコードをきれいに書く上でとても重要です。
「同じ処理を複数書くなら関数にしろ」は鉄則ですよね。
今回の方法でちょっとだけ関数の使い方が広がりましたので、色々と活用して遊んでみます!