PHPにおけるループ内でのreturnの使用
returnがループ内に配置されていることが、
常に間違いであるとは限りません。
次の例では、配列の最初のいくつの要素を合計すれば
合計が 10 以上になるかを判定する関数を作成しています:
<?php
function func($arr) {
$length = count($arr);
$sum = 0;
for ($i = 0; $i < $length; $i++) {
$sum += $arr[$i];
// 合計が10以上の場合:
if ($sum >= 10) {
return $i + 1; // ループおよび関数から抜け出す
}
}
}
$res = func([1, 2, 3, 4, 5]);
echo $res;
?>
次の例では、1から始まる連続する整数を
いくつ合計すれば結果が 100 を超えるかを
計算する関数を作成しています:
<?php
function func() {
$sum = 0;
$i = 1;
while (true) { // 無限ループ
$sum += $i;
if ($sum >= 100) {
return $i; // ここで抜けるまでループが続く
}
$i++;
}
}
echo func();
?>
数値を受け取り、結果が 10 未満になるまで、
その数値を 2 で割り続ける関数を作成してください。
関数は、結果を達成するのに必要な反復回数を返すものとします。