web関連

【PHP】関数で複数の戻り値を指定したいとき

【PHP】関数で複数の戻り値を指定したいとき

関数内で条件分岐させて値を「return array($a, $b)」みたいに複数返そうと思ったら出力方法が特殊だったので備忘録

関数の戻り値を複数設定する方法

関数

<?php 
function load_contents($name) {
  if ($name == "name01") {
    $a = "テキスト01";
    $b = "テキスト02";
    $c = "テキスト03";
  }
  if ($name == "name02") {
    $a = "テキスト04";
    $b = "テキスト05";
    $c = "テキスト06";
  }
  return array($a, $b, $c);
}
?>

出力用コード

<?php 
list($a, $b, $c) = call_user_func("load_contents","name01");
echo $a . '<br>';
echo $b . '<br>';
echo $c;
?>

call_user_func()だと引数の参照渡しが駄目らしいので値渡ししかできないみたい
参照渡しをしたかったらcall_user_func_array()を使うらしい

call_user_func()で呼び出した関数の配列の値をlist()を使って変数に代入して使えるようにする
作成した関数側で$a,$b,$cって変数用意しているからといってlist()側の変数名も一緒にする必要はないみたい

一部取得したかったら単純に変数用意しなければよさげ

list(, $b, $c) = call_user_func("load_contents","name01");
参照渡しは変数に値を代入する際に「$a =& $b 」みたいに「&」をかませる書き方みたい
ゴリゴリphp書く人たちが使うもんなのかな?使ったことない

phpの参照渡しについてはこのサイトがわかりやすかった

PHP 参照渡しまとめ – Qiita

関数内の戻り値を複数取得したことなかったから調べてみたけど、参照渡しだとかlist()、call_user_func()と初めて聞いたわ
この辺もどこで使うのかよくわからんけど勉強するかな…

Leave a Comment

入力エリアすべてが必須項目です。メールアドレスが公開されることはありません。

内容をご確認の上、送信してください。