如何在php循环中对项目求和?

时间:2010-11-26 21:24:33

标签: php loops

我已经学习了几天PHP,我有一个令人尴尬的简单问题。我想在500项循环中总结项目。我想弄清楚总共500 + 499 + 498等等。

这是我的代码:

for ($i=1; $i<=500; $i++)
{

 // echo $i . "<br />";
 $total = 0;
 $total = $total + $i;
 return $total;


}

echo $total . "<br />";

?>

无法弄清楚我做错了什么。

7 个答案:

答案 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;