如何计算相邻结果对和后续对的总和?

时间:2018-07-30 08:39:23

标签: php

我正在尝试计算MySQL查询返回的相邻两个结果的总和。 由于我需要计算相邻两个结果的总和,因此我需要将第一列的结果加到第二列中,然后将第二列的结果加到第三列中...等等。

我尝试使用 static 关键字,但是它没有按预期工作。

$sum = 0;
foreach($test as $key=>$value){
static $q;
  $q = $sum+= $value;
}
echo $q;

模式:

enter image description here

当我使用var_dump($test)时,结果为:

 array(13) { [0]=> string(5) "21.00" [1]=> string(5) "19.00" [2]=> string(5) "24.00" [3]=> string(6) "277.00" [4]=> string(5) "22.00" [5]=> string(5) "23.00" [6]=> string(5) "21.00" [7]=> string(5) "17.00" [8]=> string(5) "24.00" [9]=> string(5) "21.00" [10]=> string(5) "24.00" [11]=> string(5) "22.00" [12]=> string(5) "22.00" }

1 个答案:

答案 0 :(得分:3)

查看您的架构和var_dump结果,解决方案将如下所示:

$nthIndex = count($test) - 1;
$count = count($test[$nthIndex]);
for($i = 0; $i < $count - 1; ++$i){
    $sum = $test[$nthIndex][$i] + $test[$nthIndex][$i + 1]; // sum of current and next value
    // your code. For example, echo $sum . '<br />';
}

您应该考虑重构SQL查询以获得整洁的结果集。

更新:

我怀疑,奇怪的数组是因为OP在循环内执行var_dump($test);var_dump($test);的实际输出看起来像这样,

array(13) {
    [0] => string(5) "21.00" 
    [1] => string(5) "19.00" 
    [2] => string(5) "24.00" 
    [3] => string(6) "277.00"
    ...

因此,基于输出,解决方案将是这样,

$count = count($test);
for($i = 0; $i < $count - 1; ++$i){
    $sum = $test[$i] + $test[$i + 1];
    // your code. For example, echo $sum . '<br />';
}