我正在尝试计算MySQL查询返回的相邻两个结果的总和。 由于我需要计算相邻两个结果的总和,因此我需要将第一列的结果加到第二列中,然后将第二列的结果加到第三列中...等等。
我尝试使用 static 关键字,但是它没有按预期工作。
$sum = 0;
foreach($test as $key=>$value){
static $q;
$q = $sum+= $value;
}
echo $q;
模式:
当我使用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" }
答案 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 />';
}