- ベストアンサー
function の 戻り値の、値が入らない。
一度作ったPHPを見直しています。 で、 globalを変数はどうしてもな時と、ここで みました。 私も、メモリーの節約や、きちんとしたスクリプトを 書くために、少なくしようと思うのですが、関数の 戻り値が、 Notice: Undefined variable: d in ○○○ 値がないと、注意がはいります。 (注意自体は、分かって出しています。) $a = 10; $b = 15; tst($a,$b); echo $d ; <?php function tst($a,$b){ $d = $a + $b ; echo $d ; return $d ; } ?> 関数内部の、echo $d;では、表示されるので、 間違ってはいないと思うんですが、どこが違うんで しょうか? HPや、本で調べてはみたんですが、下手の考え休むに にたり、かなーと、思ってきたので、もうお風呂に 入ろうかと。^^; よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
関数内の $d はローカル変数の為、関数内でしか参照出来ません。 関数の戻り値を参照したい場合は以下のようにして下さい。 $a = 10; $b = 15; $d = tst($a,$b); echo $d ;
その他の回答 (1)
- hinatamama
- ベストアンサー率58% (70/120)
関数内にecho $dとあるので、return $d ;を省いて、 function tst($a,$b){ $d = $a + $b ; echo $d ; } $a = 10; $b = 15; tst($a,$b); としただけで表示されると思います。 また、このような場合でしたら、呼び出すときも、 $a = 10; $b = 15;を省いて、 test(10,15) でいいと思います。 他には、 function tst($a,$b){ $d = $a + $b ; return $d ; } print(tst(10,15)); としても同じ結果になります。
お礼
ははは、過去の素人っぽい質問を見られたのかな?^^; echo $d; はきちんと変数が代入されている事の確認 でした。 シンプルな形の方が、わかりやすいかと。 でも、PCの世界は相手の知識が分からないですよね。 printでもOKの事。 tst($a,$b)自体がreturnの値になるんですね。
お礼
returnを使えば、$dだけ、functionを呼び出した 場面で、参照可と思いました。改めて代入するんですね。 $d = return $d; みたいな気がして変な感じですが、。 いやはやお恥ずかしい。