【週刊ドットインストール】 『データで学ぶアルゴリズム Level 1-2』を運営中、Level 1-2も来週リリース予定!
動画の最後に、return を書いた時点で値が戻されるため、 それ以降の処理は無視されるとありました。 そこで、次のように return の前にメッセージを書き、
return
function sum($a, $b, $c ) { echo 'here' . PHP_EOL; return $a + $b + $c; } echo sum (100, 200, 300) + sum(300, 400, 500) . PHP_EOL;
これで実行結果を確認したところ、
here here 1800
となりました。 ここで疑問なのですが、なぜ
here 600+here 1200
または
here 1800here
とならないのでしょうか? まず、sum(100, 200, 300) で処理を呼び出すので、ここまでで
sum(100, 200, 300)
here 600
となり、次に sum(300, 400 ,500) で再び処理を呼び出すので、
sum(300, 400 ,500)
になるのかなと思っていました。 そうなると、2 行目は 数値 + 文字列になってしまうので、そのまま表示されるか、 先に出てきた数値 600 にあとから出てきた数値 1200 が足され 1800 となり、 $a + $b + $c のあとには PHP_EOL; がないので、改行されずに 2 つめの here が来るのかな と予想ていたのですが…
600
1200
1800
$a + $b + $c
PHP_EOL;
here
実行結果の順番が、なぜ上のようになっていたのか、教えて頂けるとありがたいです。 よろしくお願いします。
ドットインストールは、3分動画でマスターできるプログラミング学習サービスです。
3分で気軽に学習でき、スマートフォンからも視聴可能です。ホームページやWebサービスの制作を通して、実践的にプログラミングを学べます。
他にも、ゲーム制作やデータ分析・機械学習・AIに使われる言語まで幅広くカバー。学びたい分野のレッスンがきっと見つかります。
この回答を見るにはプレミアムプランへの登録が必要です
動画の最後に、
returnを書いた時点で値が戻されるため、それ以降の処理は無視されるとありました。
そこで、次のように
returnの前にメッセージを書き、これで実行結果を確認したところ、
となりました。
ここで疑問なのですが、なぜ
または
とならないのでしょうか?
まず、
sum(100, 200, 300)で処理を呼び出すので、ここまででとなり、次に
sum(300, 400 ,500)で再び処理を呼び出すので、になるのかなと思っていました。
そうなると、2 行目は 数値 + 文字列になってしまうので、そのまま表示されるか、
先に出てきた数値
600にあとから出てきた数値1200が足され1800となり、$a + $b + $cのあとにはPHP_EOL;がないので、改行されずに 2 つめのhereが来るのかなと予想ていたのですが…
実行結果の順番が、なぜ上のようになっていたのか、教えて頂けるとありがたいです。
よろしくお願いします。