PHPにおけるループとreturn
1から5までの数の合計を返す関数があるとします:
<?php
function func() {
$sum = 0;
for ($i = 1; $i <= 5; $i++) {
$sum += $i;
}
return $sum;
}
$res = func();
echo $res; // 15を出力する
?>
ここで、returnをループの中に次のように配置してみます:
<?php
function func() {
$sum = 0;
for ($i = 1; $i <= 5; $i++) {
$sum += $i;
return $sum;
}
}
$res = func();
echo $res;
?>
この場合、ループは1回しか反復されず、関数(そして同時にループ)から自動的に抜け出します。ループが1回だけ反復されるので、変数$sumには必要な合計値ではなく、単に数値1だけが格納されます。
次のコードを実行した結果、何が表示されるでしょうか:
<?php
function func($num) {
$sum = 0;
for ($i = 1; $i <= $num; $i++) {
$sum += $i;
return $sum;
}
}
echo func(5);
?>
その理由を説明してください。
このコードの作者は何をしようとしていたのでしょうか?作者の間違いを修正してください。