我在下面的代码中有一组数字。
$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
任何人都知道如何获得这个?
答案 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)
$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