我已经学习了几天PHP,我有一个令人尴尬的简单问题。我想在500项循环中总结项目。我想弄清楚总共500 + 499 + 498等等。
这是我的代码:
for ($i=1; $i<=500; $i++)
{
// echo $i . "<br />";
$total = 0;
$total = $total + $i;
return $total;
}
echo $total . "<br />";
?>
无法弄清楚我做错了什么。
答案 0 :(得分:6)
从循环中拉出初始化和return语句:
$total = 0;
for ($i=1; $i<=500; $i++) {
echo $i . "";
$total = $total + $i;
}
echo $total . "";
return $total;
答案 1 :(得分:6)
您也可以
echo array_sum(range(0,500)); // 125250
或在没有for
正文的情况下进行整个计算:
for( $total = $i = 0; $i <= 500; $total += $i++ );
echo $total; // 125250
以及其他几种方法(Daniel's solution特别好)。
以上两者都与您可能寻找的内容相同
$total = 0;
for ($i=1; $i<=500; $i++) {
$total = $total + $i;
}
echo $total;
就像其他地方已经指出的那样,当你在for
loop内$total = 0;
时,你会覆盖$total
的上一个值并将return
放入其中将结束你的脚本除非循环在函数内部。
答案 2 :(得分:2)
看起来你只需要将$total = 0;
行移出你的循环......否则它将在每次迭代时设置为0
。
您还需要将return $total;
行移到外面,如下面评论中所述@Webnet。
另请注意,您可以在constant time中进行该计算,而无需遍历所有数字,方法是找到sum of an arithmetic progression:
S n = 1 / 2 n(a 1 + a 2 )
S n = 250(1 + 500)
= 125250
答案 3 :(得分:0)
您的代码应该是......
$total = 0;
for ($i=1; $i<=500; $i++) {
// echo $i . "<br />";
$total = $total + $i;
}
echo $total . "<br />";
return $total;
将打破循环
答案 4 :(得分:0)
好吧,您每次都将$total
重置为零,并在声明之外使用return
...
无论如何,答案是(500*501)/2 = 250*501 = 125250
(基本数学)
答案 5 :(得分:0)
您有两个错误:
首先,每次重复循环时将$total
设置为0.
然后,你使用return
,这里发生的是它将取消进一步执行,所以循环基本上只运行一次。
试试这个。
$total = 0;
for ($i=1; $i<=500; $i++){
$total = $total + $i;
}
echo $total;
答案 6 :(得分:0)
$total = 0;
for ($i=1; $i<=500; $i++) {
echo $i . "";
$total = $total + $i;
}
echo $total . "";
return $total;