我编写了下面的代码来计算加权平均值。该算法是正确的,但我的问题是当值 $ row [' grade'] 是例如: 9.5时,它会被截断为9 ,当值 10会被截断为1 。从某些测试中我认为当值插入数组时会出现问题。我已经尝试了所有我知道的但我无法让它发挥作用。有任何想法吗?这是以下代码:
<?php
require 'database_connect.php';
$username=$_SESSION["username"];
$sql="SELECT dm,grade from subject,attends where username='$username' AND grade>='5' and subject_code=code";
$result = mysqli_query($conn,$sql);
$i=-1;
while($row = mysqli_fetch_array($result)){
$i=$i+1;
$grade[$i]=$row['grade'];
if($row['dm']<=2){
$weight[$i]=1.0;
}elseif($row['dm']<=4){
$weight[$i]=1.5;
}else{
$weight[$i]=2.0;
}
}
if($i>=0){
$total=array_sum($weight);
$part=0;
for($j=0;$j<=$i;$j++){
echo $grade[$j].",";
echo $weight[$j]."|||";
$part=$part+$grade[$j]*$weight[$j];
}
$full=$part/$total;
// echo round($full, 2);
}else{
echo "0";
}
$conn->close();
?>
答案 0 :(得分:0)
将$grade = array(); $weight = array();
放在while循环之前。
编辑:在首次使用之前初始化数组总是一个好主意,因为如果$grade
恰好是一个字符串,那么$grade[0]
引用将意味着字符串的第一个字符,而不是数组的第一个元素。
对于PHP 5.4及更高版本,您还可以编写$grade = []; $weight = [];
。