2017-05-09 56 views
-1

我目前有一个循环表内输出8个制定的值作为跨越8列的一个表行。这是它的截图:PHP,循环中的数字平均

enter image description here

这是伟大的是,除了下“总体”修正精确度最后一列单元格的方式。这需要是之前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" 
+1

你能否将你的问题更新为'$ row'的原始数组格式? – fubar

+0

你的意思是作为var_dump吗?对不起,我很困惑如何做到你要问什么 –

+1

是的,'var_dump($ row)'并将输出添加到问题 – fubar

回答

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找到数组长度。