• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:可変関数について。また、どこまで深く学ぶべきか)

可変関数について。また、どこまで深く学ぶべきか

このQ&Aのポイント
  • PHPで可変関数を学んだが、関数内で変数に値を格納しても変わらなかった。
  • 可変関数の代わりに値を変えてreturnすれば同じことができるのか疑問。
  • 可変関数の使用方法や値渡しの仕組みについて詳しく知りたい。

質問者が選んだベストアンサー

  • ベストアンサー
  • shimix
  • ベストアンサー率54% (865/1590)
回答No.2

ANo.1です。失礼。可変変数でなく可変関数ですね(汗 それでも、どう読んでも「変数名が可変」であることを意識したソースには読めません。可変関数として使うなら /* function内でecho */ function kahen_on_1() { echo "A<br />"; } function kahen_on_2() { echo "B<br />"; } $kahen_on = "kahen_on_1"; $kahen_on(); $kahen_on = "kahen_on_2"; $kahen_on(); print "<hr />"; /* returnでやる場合 */ function kahen_return_1() { return "A<br />"; } function kahen_return_2() { return "B<br />"; } $kahen_return = "kahen_return_1"; echo $kahen_return(); $kahen_return = "kahen_return_2"; echo $kahen_return(); ですよね(変数名のあとに括弧が付くことによって変数の値を関数名として使う)。

その他の回答 (1)

  • shimix
  • ベストアンサー率54% (865/1590)
回答No.1

>関数内で変数に値を格納し直してreturnで値を戻せば同じことができるのでは? >と思いやってみましたが変数に格納されている値が変わりませんでした。 デフォルトは「値渡し」です。関数内で変更した値を戻したければ「参照渡し」にしてください。 RTFM. http://www.php.net/manual/ja/functions.arguments.php というか、提示されたソースは「値渡しと参照渡しのテストスクリプト」にしか読めません。どこにも「可変変数」が出てきていません。「可変変数」は以下のようなものを指すのですが、それは理解されていますよね? <?php $var1 = 'aaa'; $var2 = 'bbb'; $var = 'var1'; print $$var . '<br />'; $var = 'var2'; print $$var . '<br />'; http://www.php.net/manual/ja/language.variables.variable.php 可変変数は「そういうものがある」程度に覚えておけば、使う機会に遭遇したときに使えばいいと思います。でも関数の引数の扱いについてはよく理解しておいてください。標準関数でも処理結果を戻り値で戻すものと渡した変数を書き替えて戻す(戻り値は真偽値だけだったり処理件数だったり)ものとありますよが、しばしば混同される方がいらっしゃいますので。

関連するQ&A

専門家に質問してみよう