在数组中连续添加每5个数字(PHP)

时间:2014-02-23 06:47:20

标签: php arrays sum

我在下面的代码中有一组数字。

$result_data = array(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20);

$arrayCount = count($result_data);

for ($x = 0; $x < $arrayCount; $x++)
{
    if ($x%5==0)
    {
        $sum = $result_data[0] + $result_data[1] + $result_data[2] + $result_data[3] + $result_data[4];
        echo json_encode($sum);
        echo ("\n");
    }       

}

我得到了结果:

15 15 15 15

实际上我希望结果是数组中每5个数字的总和,并且期望结果为:

15 40 65 90

任何人都知道如何获得这个?

6 个答案:

答案 0 :(得分:1)

您可以将所有代码减少为:

$result_data = array(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20);
echo implode('\n', array_map('array_sum', array_chunk($result_data, 5))),'\n';

哪个输出:

15
40
65
90

请参阅:

的手册页

答案 1 :(得分:1)

而不是引用$result_data[1]$result_data[2]$result_data[3]等,您需要将ID从当前$x值中删除,就像这样

$sum = $result_data[$x] + $result_data[$x+1] + $result_data[$x+2] + $result_data[$x+3] + $result_data[$x+4]

一种不同的方法

我可能会以不同的方式处理这个问题,在我进行的过程中不断添加值,并在达到每个第五个数字时输出当前总数,如下所示:

$result_data = array(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20);

$arrayCount = count($result_data);

$subtotal = 0;
for ($x = 0; $x < $arrayCount; $x++)
{
    $subtotal += $result_data[$x];
    if ($x%5==0)
    {
        echo json_encode($subtotal);
        echo ("\n");
        $subtotal = 0;.
    }       

}

答案 2 :(得分:0)

试试这个:

$result_data = array(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20);

$arrayCount = count($result_data);

for ($x = 0; $x < $arrayCount; $x++)
{
    if ($x%5==0)
    {
        $sum = $result_data[$x] + $result_data[$x+1] + $result_data[$x+2] + $result_data[$x+3] + $result_data[$x+4];
        echo json_encode($sum);
        echo ("\n");
    }       

}

答案 3 :(得分:0)

而不是

$sum = $result_data[0] + $result_data[1] + $result_data[2] + $result_data[3] + $result_data[4]
你可能想要

$sum = $result_data[$x] + $result_data[$x+1] + $result_data[$x+2] + $result_data[$x+3] + $result_data[$x+4]

答案 4 :(得分:0)

您可以使用:

$sum = $result_data[$x] + $result_data[$x+1] + $result_data[$x+2] + $result_data[$x+3] + $result_data[$x+4]

而不是:

$sum = $result_data[0] + $result_data[1] + $result_data[2] + $result_data[3] + $result_data[4];

因为您已在$x循环中指定了for

<强> Demo

答案 5 :(得分:0)

Working demo

$result_data = range(1,20);
foreach($result_data as $key=>$value){
    if($value%5==0){
        echo $value+$result_data[$key-1]+$result_data[$key-2]
             +$result_data[$key-3]+$result_data[$key-4]."\n";
    }
}

输出:

15

40

65

90