質問: ### 前提・実現したいこと プログラミング初心者です。戻り値を学習中なのですが、戻り値の概念がよく分かりません。 例えば、下のソースコードの、戻り値を使った場合(上、square)と、使わなかった場合(下、square2)の場合、実行結果は同じなのですが、何が違うのでしょうか? 戻り値を使うと、何が良くて使うのでしょうか? google先生で調べた結果に出てくる、戻り値を「返す」という言葉の意味も、どこに何を返すんだ・・・という感じで、意味が分からないです。分かる範囲で良いので、教えてください。 ### 発生している問題・エラーメッセージ ``` エラーメッセージはありません。 ``` ### 該当のソースコード ``` function square($num) { return $num * $num; } echo square(4); //------------------// function square2($num2){ echo $num2 * $num2; } square2(3); ?> ``` ### 試したこと ここに問題に対して試したことを記載してください。 ### 補足情報(FW/ツールのバージョンなど) ここにより詳細な情報を記載してください。
回答: square2()の実装だと、文字列出力せずに値のみほしいときに困る。 phpにおいて、結果は標準出力されるのみではない。 例えば、jsonで結果を応答するAPIを実装する場合に、 戻り値として処理結果を返してくれない関数は困る。 結果を配列にまとめて、json_encode()で出力したい場面であれば、 先に途中で呼び出した関数の中で勝手にechoで出力しちゃって値が返ってこないのは困る。 だから、square()とsquare2()は違う結果を導いている。 こういう間違いを起こしそうだし。 ``` function square($num) { return $num * $num; } $a = square(4); //------------------// function square2($num2){ echo $num2 * $num2 . PHP_EOL; } $b = square2(3); echo $a . PHP_EOL; echo $b . PHP_EOL; ``` !イメージ説明 これを見て、4*4→9で、3*3→16に勘違いしてしまわないかと。