0

やあみんな私はデータベーステーブルからいくつかのレコードを読み取るmysqlクエリを持っています。$ key-> r4、$ key-> sr13、$ key-> huaweiの各フィールドは完全に表示されていますが、3つの合計を取得できません。これが私のコードです:

$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

演算子の優先順位で説明されているように、.文字列連結演算子と+算術加算演算子の両方が同じ優先順位を持っています。それらは左結合であるため、左から右に評価されます。したがって、現在の式は次のように評価されます。

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は連結された文字列をメモリ内に構築する必要がないため、この2番目のアプローチの方が効率的であることに注意してください。変数の展開が不要な場合は、一重引用符で囲まれたリテラルを使用することで、二重引用符で囲まれた文字列リテラルの不要な解析を回避することもできます。

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

invalPHPを使用して合計を行いますが、またはを使用してデータを変換することを忘れないでくださいfloatval

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

TDそして、</td>マークアップで閉じることを忘れないでください

于 2013-03-11T11:38:40.707 に答える