Php echo$行内的舍入数
我有一个html表,它从数据库表中回显PHP值。在这个特定的区域中,被回显的值是数字,但小数是无法控制的。我知道如何将数字作为一个PHP变量进行四舍五入,但如何将这些数字四舍五入到3位小数,同时像这样回显行Php echo$行内的舍入数,php,html-table,rounding,Php,Html Table,Rounding,我有一个html表,它从数据库表中回显PHP值。在这个特定的区域中,被回显的值是数字,但小数是无法控制的。我知道如何将数字作为一个PHP变量进行四舍五入,但如何将这些数字四舍五入到3位小数,同时像这样回显行 <td><?php echo $row['test1CorrectAcc']; ?>%</td> <td><?php echo $row['test2CorrectAcc']; ?>%</td> <td>&l
<td><?php echo $row['test1CorrectAcc']; ?>%</td>
<td><?php echo $row['test2CorrectAcc']; ?>%</td>
<td><?php echo $row['test3CorrectAcc']; ?>%</td>
<td><?php echo $row['test4CorrectAcc']; ?>%</td>
<td><?php echo $row['test5CorrectAcc']; ?>%</td>
<td><?php echo $row['test6CorrectAcc']; ?>%</td>
<td><?php echo $row['test7CorrectAcc']; ?>%</td>
<td><?php echo $row['test8CorrectAcc']; ?>%</td>
%
%
%
%
%
%
%
%
更新
获取平均值的SQL语句:
UPDATE `staging`
SET `testOverallAverage` = (`test1CorrectAcc` + `test2CorrectAcc` + `test3CorrectAcc` + `test4CorrectAcc` + `test5CorrectAcc` + `test6CorrectAcc` + `test7CorrectAcc` + `test8CorrectAcc`) /
((CASE WHEN `test1CorrectAcc`<> 0 THEN 1 ELSE 0 END ) +
(CASE WHEN `test2CorrectAcc`<> 0 THEN 1 ELSE 0 END ) +
(CASE WHEN `test3CorrectAcc`<> 0 THEN 1 ELSE 0 END ) +
(CASE WHEN `test4CorrectAcc`<> 0 THEN 1 ELSE 0 END ) +
(CASE WHEN `test5CorrectAcc`<> 0 THEN 1 ELSE 0 END ) +
(CASE WHEN `test6CorrectAcc`<> 0 THEN 1 ELSE 0 END ) +
(CASE WHEN `test7CorrectAcc`<> 0 THEN 1 ELSE 0 END ) +
(CASE WHEN `test8CorrectAcc`<> 0 THEN 1 ELSE 0 END )
);
UPDATE`staging`
设置'testOverallAverage`=('test1CorrectAcc`+'test2CorrectAcc`+'test3CorrectAcc`+'test4CorrectAcc`+'test5CorrectAcc`+'test6CorrectAcc`+'test7CorrectAcc`+'test8CorrectAcc`)/
(`test1CorrectAcc`0时为1,否则为0结束)+
(当'test2CorrectAcc'为0时,则为1,否则为0结束)+
(当'test3CorrectAcc'为0时,则为1,否则为0结束)+
(当'test4CorrectAcc'为0时,则为1,否则为0结束)+
(当'test5CorrectAcc'为0时,则为1,否则为0结束)+
(当'test6CorrectAcc'为0时,则为1,否则为0结束)+
(当'test7CorrectAcc'为0时,则为1,否则为0结束)+
(当'test8CorrectAcc'为0时,则为1,否则为0结束)
);
您可以使用以下功能:
<td><?php echo number_format($row['test1CorrectAcc'], 3); ?>%</td>
<td><?php echo number_format($row['test2CorrectAcc'], 3); ?>%</td>
<td><?php echo number_format($row['test3CorrectAcc'], 3); ?>%</td>
<td><?php echo number_format($row['test4CorrectAcc'], 3); ?>%</td>
<td><?php echo number_format($row['test5CorrectAcc'], 3); ?>%</td>
<td><?php echo number_format($row['test6CorrectAcc'], 3); ?>%</td>
<td><?php echo number_format($row['test7CorrectAcc'], 3); ?>%</td>
<td><?php echo number_format($row['test8CorrectAcc'], 3); ?>%</td>
您可以使用回音循环:
<?php
for($i = 1; $i <= 8; $i++) {
?>
<td><?php echo number_format($row['test'.$i.'CorrectAcc'], 3); ?>%</td>
<?
}
?>
为什么不在循环中编写代码。用循环编写代码会更好。我更新了我的答案,谢谢大家的进步@krisrootethanks!另外,你们两人都擅长SQL吗?它还不允许我发布另一个问题,但我试图平均保存8行,但考虑到字段可能有零。我已经用这个问题更新了我的代码以防万一。我添加了sql查询来回答,请检查一下@TomN.我刚刚运行了它,但它返回时有0行受影响,我所有行的总体平均字段为0,因此它看起来由于某种原因仍然不起作用。为了确保这一点,我想将这些字段的平均值保存为testOverallAverage,但如果这8个字段中有任何一个为零,我想对其进行调整
<?php
for($i = 1; $i <= 8; $i++) {
?>
<td><?php echo number_format($row['test'.$i.'CorrectAcc'], 3); ?>%</td>
<?
}
?>
UPDATE `staging`
SET `testOverallAverage` = IFNULL(
(`test1CorrectAcc` + `test2CorrectAcc` + `test3CorrectAcc` + `test4CorrectAcc` + `test5CorrectAcc` + `test6CorrectAcc` + `test7CorrectAcc` + `test8CorrectAcc`)
/
NULLIF(
(CASE WHEN `test1CorrectAcc`<> 0 THEN 1 ELSE 0 END ) +
(CASE WHEN `test2CorrectAcc`<> 0 THEN 1 ELSE 0 END ) +
(CASE WHEN `test3CorrectAcc`<> 0 THEN 1 ELSE 0 END ) +
(CASE WHEN `test4CorrectAcc`<> 0 THEN 1 ELSE 0 END ) +
(CASE WHEN `test5CorrectAcc`<> 0 THEN 1 ELSE 0 END ) +
(CASE WHEN `test6CorrectAcc`<> 0 THEN 1 ELSE 0 END ) +
(CASE WHEN `test7CorrectAcc`<> 0 THEN 1 ELSE 0 END ) +
(CASE WHEN `test8CorrectAcc`<> 0 THEN 1 ELSE 0 END )
, 0)
, 0);