如何对以字符串形式出现的数字求和?

时间:2019-05-03 04:03:46

标签: php

我想对循环中的数字求和。但是,我注意到循环将数字显示为字符串而不是整数。我之所以这么认为是因为,当说循环输出1,1,1,1时,而不是将它们相加后就变成4,它显示为1111。

这是我尝试过的代码:

$sql5 = "SELECT * FROM test
WHERE loc = 'town'
ORDER BY UpdatedDate DESC";

$result3 = $conn->query($sql5);

if ($result3->num_rows > 0) {
    // output data of each row
    while($row = $result3->fetch_assoc()) {

        if($row["Feedback1"]=="") {
          $row["Feedback1"] = 0;
        }

        if($row["Feedback2"]=="") {
          $row["Feedback2"] = 0;
        }

        if($row["Feedback3"]=="") {
          $row["Feedback3"] = 0;
        }

        if($row["Feedback4"]=="") {
          $row["Feedback4"] = 0;
        }

        if($row["Feedback5"]=="") {
          $row["Feedback5"] = 0;
        }

        if($row["Feedback6"]=="") {
          $row["Feedback6"] = 0;
        }

        if($row["Feedback7"]=="") {
          $row["Feedback7"] = 0;
        }      

        $total_qn = $row['Feedback1'] + $row['Feedback2'] + $row['Feedback3'] + $row['Feedback4'] + $row['Feedback5'] + $row['Feedback6'] + $row['Feedback7'];
        $sum = 0;
        $sum = $total_qn + $sum;
        echo $sum;

这是我在这段代码背后的思考过程:

我汇总了几列的值,并将其分配给变量。

然后将这个变量循环并加到它的值上,这样我就可以获得全部和。

但是,如上所述,它不是输出1 + 1 + 1 + 1 = 4,而是输出1111。

我可以从逻辑上和代码方面知道我在哪里做错了吗?

3 个答案:

答案 0 :(得分:2)

更改查询以直接获取SUM:-

$sql5 = "SELECT SUM(Feedback1+Feedback2+Feedback3+Feedback4+Feedback5+Feedback6+Feedback7) as sum FROM test WHERE loc = 'town' ORDER BY UpdatedDate DESC";
$result3 = $conn->query($sql5);
if ($result3->num_rows > 0) {
    while($row = $result3->fetch_assoc()) {
        echo $row['sum'];
        echo PHP_EOL; // new line to distinguish each output
    }
}

答案 1 :(得分:1)

您需要将它们转换为整数或浮点数,以便PHP不会将它们视为字符串。 这样做

$sql5 = "SELECT * FROM test
WHERE loc = 'town'
ORDER BY UpdatedDate DESC";

$result3 = $conn->query($sql5);

if ($result3->num_rows > 0) {
    // output data of each row
    while($row = $result3->fetch_assoc()) {

        if($row["Feedback1"]=="") {
          $row["Feedback1"] = 0;
        }

        if($row["Feedback2"]=="") {
          $row["Feedback2"] = 0;
        }

        if($row["Feedback3"]=="") {
          $row["Feedback3"] = 0;
        }

        if($row["Feedback4"]=="") {
          $row["Feedback4"] = 0;
        }

        if($row["Feedback5"]=="") {
          $row["Feedback5"] = 0;
        }

        if($row["Feedback6"]=="") {
          $row["Feedback6"] = 0;
        }

        if($row["Feedback7"]=="") {
          $row["Feedback7"] = 0;
        }      

        $total_qn = (int)$row['Feedback1'] + (int)$row['Feedback2'] + (int)$row['Feedback3'] + (int)$row['Feedback4'] + (int)$row['Feedback5'] + (int)$row['Feedback6'] + (int)$row['Feedback7'];
        $sum = 0;
        $sum = $total_qn + (int)$sum;
        echo $sum;

答案 2 :(得分:0)

使用函数intval(): 例子

intval($row['Feedback1'])