2016-02-12 202 views
0

我试图设置一个基本的PHP代码,它扫描数字并计算一组条件的总数。在这里,我想说我想添加100和200之间的所有数字,即偶数和5的倍数。要做到这一点,我想我可以先将这些数字放入数组中,然后将数组加起来。在PHP中计算数组的总和

事情是这样的:

<?php 
    $total = 0; 
    $naturalNumber = array(); 
    $naturalNumber[] = $i; 
    while ($i % 2 == 0 && $i % 5 == 0) { 
    for($i>=100; $i <=200; $i++) { 
     $naturalNumber[] = $i; 
     $total = array_sum($naturalNumber); 
    } 
    } 
    echo "<p>$total</p>"; 
?> 

但出现错误:cannot use [] for reading,没有任何语义问题,在这里呢?

干杯!

+0

什么是“自然数”,数甚至是5的倍数? – jpganz18

+4

你从哪里得到'$ i'?您将'$ i'推入'$ naturalNumber'数组,但是'$ i'在它之前不存在? – Ben

+0

你说的没错,我可以在开始时声明$ i,不过,对吧? – user5904242

回答

4

for循环是不正确的:

for($i>=100; $i <=200; $i++) { 
     ^^ 

for第一个参数应该是一个价值的分配,你不这样做,你只是如果$i测试大于100,这没有意义。 $i从来没有被首先定义,所以你有效地尝试迭代(null >= 100) -> 200 - >false -> 200 - >0 -> 200

你想

for($i = 100; $i <=200; $i++) { 
     ^---note this 

代替。

再加上嵌套的whilefor也只是......很奇怪。为什么while在第一位?所有你需要的是for循环和和if里面,做各种%测试。

0

由于“@Marc B”先生明确地做了这个解决方案,但我想分享我自己的意见。 你也可以这样做,

<?php  
    $total = 0; 
    $naturalNumber = array(); 
    //array_push($naturalNumber, $i);  
    for($i=100; $i <=200; $i++) { 
    if ($i % 2 == 0 && $i % 5 == 0) { 
     array_push($naturalNumber, $i); 
    } 
    } 
    $total = array_sum($naturalNumber); 
    echo "<p>$total</p>"; 
?> 
+0

谢谢你,你可以告诉我是一个业余的学习交易,所以感谢所有的评论! – user5904242

+0

再次while循环是毫无意义的。你应该只有'for(...){if($ i%2等){array_push(...); }}' –

+0

@MarcB,先生,我做到了。感谢您的帮助。 –