このコードの処理順序を詳しく教えてください

最後の echo を実行する時、2つの sum 関数はすでに実行済みです。
2023年3月21日
ユーザー

動画の最後に、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) で処理を呼び出すので、ここまでで

here
600

となり、次に sum(300, 400 ,500) で再び処理を呼び出すので、

here
600+here
1200

になるのかなと思っていました。
そうなると、2 行目は 数値 + 文字列になってしまうので、そのまま表示されるか、
先に出てきた数値 600 にあとから出てきた数値 1200 が足され 1800 となり、
$a + $b + $c のあとには PHP_EOL; がないので、改行されずに 2 つめの here が来るのかな
と予想ていたのですが…

実行結果の順番が、なぜ上のようになっていたのか、教えて頂けるとありがたいです。
よろしくお願いします。

この回答を見るにはプレミアムプランへの登録が必要です

プレミアムプランとは?

このレッスンの質問と回答(8)