在mysql查询后,Php值被截断

时间:2017-02-10 21:24:14

标签: php mysql

我编写了下面的代码来计算加权平均值。该算法是正确的,但我的问题是当值 $ 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();

?>

1 个答案:

答案 0 :(得分:0)

$grade = array(); $weight = array();放在while循环之前。

编辑:在首次使用之前初始化数组总是一个好主意,因为如果$grade恰好是一个字符串,那么$grade[0]引用将意味着字符串的第一个字符,而不是数组的第一个元素

对于PHP 5.4及更高版本,您还可以编写$grade = []; $weight = [];