【问题标题】:PHP, averaging numbers in a loopPHP,循环中的平均数字
【发布时间】:2017-05-09 19:52:36
【问题描述】:

我目前在一个表中有一个循环,它将 8 个公式化值输出为一个跨越 8 列的表行。这是它的截图:

它的方式很棒,除了最后一列单元格用于在“总体”下更正准确度。这需要是前面 8 个值的平均值(显然,一个是 0 或 NAN)。

这是创建最后一行的代码:

        <tr>
        <td style="border:none; text-align: left;">Meter Volume: </td>
        <td><? echo $row['test1MeterVol'];?>&nbsp;</td>
        <td><? echo $row['test2MeterVol'];?>&nbsp;</td>
        <td><? echo $row['test3MeterVol'];?>&nbsp;</td>
        <td><? echo $row['test4MeterVol'];?>&nbsp;</td>
        <td><? echo $row['test5MeterVol'];?>&nbsp;</td>
        <td><? echo $row['test6MeterVol'];?>&nbsp;</td>
        <td><? echo $row['test7MeterVol'];?>&nbsp;</td>
        <td><? echo $row['test8MeterVol'];?>&nbsp;</td>
    </tr>
    <tr>
        <td style="border:none; text-align: left;">Tester Volume: </td>
        <td><? echo $row['test1TesterVol'];?>&nbsp;</td>
        <td><? echo $row['test2TesterVol'];?>&nbsp;</td>
        <td><? echo $row['test3TesterVol'];?>&nbsp;</td>
        <td><? echo $row['test4TesterVol'];?>&nbsp;</td>
        <td><? echo $row['test5TesterVol'];?>&nbsp;</td>
        <td><? echo $row['test6TesterVol'];?>&nbsp;</td>
        <td><? echo $row['test7TesterVol'];?>&nbsp;</td>
        <td><? echo $row['test8TesterVol'];?>&nbsp;</td>
    </tr>
    <tr>
        <td style="border:none; text-align: left;">Tester Accuracy: </td>
        <td><? echo $row['test1Accuracy'];?>%&nbsp;</td>
        <td><? echo $row['test2Accuracy'];?>%&nbsp;</td>
        <td><? echo $row['test3Accuracy'];?>%&nbsp;</td>
        <td><? echo $row['test4Accuracy'];?>%&nbsp;</td>
        <td><? echo $row['test5Accuracy'];?>%&nbsp;</td>
        <td><? echo $row['test6Accuracy'];?>%&nbsp;</td>
        <td><? echo $row['test7Accuracy'];?>%&nbsp;</td>
        <td><? echo $row['test8Accuracy'];?>%&nbsp;</td>
        <td style="border:none;">Overall</td>
    </tr>
    <tr>

        <td style="border:none; text-align: left;">Corrected Accuracy: </td>

/*This is the loop that builds the formula for all 8 tests*/

        <?php for($i=1; $i<=8; $i++){ 
            $testFormA = $row["test".$i."MeterVol"] / $row["test".$i."TesterVol"]; 
            $testFormB = $testFormA * $row["test".$i."Accuracy"]; 
            $testFinalForm = $testFormB / 100;                                      
        ?>
        <td><?php echo round($testFinalForm,3) ?>%</td>


        <?php }?>

由于这 8 个值被收集在一个循环中并放在一行中,有没有办法将它们的平均值放在最后一个单元格中?

更新:

var_dump($row["test".$i."MeterVol"]  );
var_dump($row["test".$i."TesterVol"]);

string(4) "0.61" string(4) "0.62" string(4) "0.98" string(1) "1" string(4) "2.41" string(4) "2.44" string(4) "8.87" string(4) "9.03" string(4) "6.65" string(4) "6.72" string(5) "26.12" string(4) "26.5" string(5) "52.45" string(4) "52.6" string(1) "0" string(1) "0"

【问题讨论】:

  • 您能否将您的问题更新为$row 的原始数组格式?
  • 您的意思是作为 var_dump 吗?抱歉,我对如何完全按照您的要求进行操作感到困惑
  • 是的,var_dump($row) 并将输出添加到问题中
  • 所以在您的for 循环中,有一个$row 变量,您可以访问该变量来执行算术运算。 var_dump 那个$row.
  • NaN 和 5 的平均值是多少?我会说它是未定义的,但你可能有一个定义。

标签: php html forms math html-table


【解决方案1】:

要计算 8 个值的平均值,您需要将 8 个值相加,然后除以值的数量,在本例中为 8。

例如:

<?php

$accuracy = [];

for ($i = 1; $i <= 8; $i++) {
    $accuracy[] = $row["test{$i}MeterVol"] / $row["test{$i}TesterVol"] * $row["test{$i}Accuracy"] / 100;
}

$average = array_sum($accuracy) / count($accuracy);

因此,如果您要在当前循环的每次迭代期间将 $testFinalForm 的值存储在一个数组中,按照上面的示例,您可以使用 array_sum 计算总和,从而使用 count 计算平均值找到数组长度。

【讨论】:

    猜你喜欢
    • 2021-02-12
    • 1970-01-01
    • 2010-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多