Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/244.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php echo$行内的舍入数_Php_Html Table_Rounding - Fatal编程技术网

Php echo$行内的舍入数

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

我有一个html表,它从数据库表中回显PHP值。在这个特定的区域中,被回显的值是数字,但小数是无法控制的。我知道如何将数字作为一个PHP变量进行四舍五入,但如何将这些数字四舍五入到3位小数,同时像这样回显行

<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);