0

嘿伙计们,我有一个 mysql 查询,它从数据库表中读取一些记录。$key->r4、$key->sr13 和 $key->huawei 字段完美显示,但我无法得到三者的总和。这是我的代码:

$total_r4=0;$total_sr13=0;$total_huawei=0;
    foreach($view_data->result() as $key){
        $total_r4       += $key->r4;
        $total_sr13     += $key->sr13;
        $total_huawei   += $key->huawei;
        echo "<tr>";
        echo "<td>$key->date";
        echo "<td>$key->time";
        echo "<td>$key->r4";
        echo "<td>$key->sr13";
        echo "<td>$key->huawei";
        echo "<td>".$key->r4 + $key->sr13 + $key->huawei;

    }

问题实际上是在最后一行没有对 3 个变量求和!

4

3 回答 3

0

尝试:

...
$total_r4       += $key->r4;
$total_sr13     += $key->sr13;
$total_huawei   += $key->huawei;
$tdTotal = ($key->r4 + $key->sr13 + $key->huawei);
.....
echo "<td>".$tdTotal."</td>";
于 2013-03-11T11:37:47.617 回答
0

Operator Precedence中所述,.字符串连接运算符和+算术加法运算符具有相同的优先级。因为它们是左结合的,所以它们是从左到右计算的;因此,您当前的表达式被评估为:

echo (("<td>".$key->r4) + $key->sr13) + $key->huawei;

要强制使用替代评估顺序,请使用显式括号:

echo "<td>". ($key->r4 + $key->sr13 + $key->huawei);

否则不要使用字符串连接,而是优先使用多个参数来echo声明:

echo "<td>", $key->r4 + $key->sr13 + $key->huawei;

请注意,第二种方法更有效,因为 PHP 不需要在内存中构建连接的字符串。通过在不需要变量扩展的情况下使用单引号文字,还可以避免对双引号字符串文字进行不必要的解析:

echo '<td>', $key->r4 + $key->sr13 + $key->huawei;
于 2013-03-11T11:38:32.490 回答
0

使用 PHP 进行求和,但不要忘记使用inval或转换数据floatval

echo "<td>".(intval($key->r4) + intval($key->sr13) + intval($key->huawei))."</td>;

并且不要忘记关闭TDwith</td>标记

于 2013-03-11T11:38:40.707 回答