我想对循环中的数字求和。但是,我注意到循环将数字显示为字符串而不是整数。我之所以这么认为是因为,当说循环输出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。
我可以从逻辑上和代码方面知道我在哪里做错了吗?
答案 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'])