PHP - Неустранимая ошибка: неподдерживаемые типы операндов

Я продолжаю получать следующую ошибку, и мне было интересно, как это исправить?

Это второй раз, когда я получил эту ошибку, я исправил ее в первый раз, но по какой-то причине я не могу исправить ее во второй раз.

Fatal error: Unsupported operand types on line 103

Вот строка 103.

$avg = (round($total_rating_points / $total_ratings,1));

Вот полный код ниже.

function getRatingText(){
    $dbc = mysqli_connect ("localhost", "root", "", "sitename");

    $page = '3';

    $sql1 = "SELECT COUNT(users_articles_id) 
             FROM articles_grades 
             WHERE users_articles_id = '$page'";

    $result = mysqli_query($dbc,$sql1);

    if (!mysqli_query($dbc, $sql1)) {
            print mysqli_error($dbc);
            return;
    }

    $total_ratings = mysqli_fetch_array($result);

    $sql2 = "SELECT grade_points 
             FROM grades 
             JOIN articles_grades ON grades.id = articles_grades.grade_id
             WHERE articles_grades.users_articles_id = '$page'";

    $result = mysqli_query($dbc, $sql2);

    if (!mysqli_query($dbc, $sql2)) {
            print mysqli_error($dbc);
            return;
    }

    while($row = mysqli_fetch_array($result)) {

        $trp[] = $row[0];
    }

    $total_rating_points = array_sum($trp);

    if (!empty($total_rating_points) && !empty($total_ratings)){
        $avg = (round($total_rating_points / $total_ratings,1));
        $votes = $total_ratings;
        echo $avg . "/10  (" . $votes . " votes cast)";
    } else {
        echo '(no votes cast)';
    }
}

Ответы

Ответ 1

$total_ratings - это массив, который нельзя использовать для разделения.

Сверху:

$total_ratings = mysqli_fetch_array($result);

Ответ 2

$total_ratings - это массив.

Ответ 3

У меня была аналогичная ошибка со следующим кодом: -

foreach($myvar as $key => $value){
    $query = "SELECT stuff
            FROM table
            WHERE col1 = '$criteria1'
            AND col2 = '$criteria2'";

    $result = mysql_query($query) or die('Could not execute query - '.mysql_error(). __FILE__. __LINE__. $query);               
    $point_values = mysql_fetch_assoc($result);
    $top_five_actions[$key] += $point_values; //<--- Problem Line       
}

Оказалось, что моя переменная $point_values ​​иногда возвращала false, что вызвало проблему, поэтому я исправил ее, обернув ее в mysql_num_rows check: -

if(mysql_num_rows($result) > 0) {
        $point_values = mysql_fetch_assoc($result);
        $top_five_actions[$key] += $point_values;
}

Не уверен, что это помогает?

Приветствия

Ответ 4

Я думаю, вы хотите сделать это:

$total_rating_count = count($total_rating_count);
if ($total_rating_count > 0) // because you can't divide through zero
   $avg = round($total_rating_points / $total_rating_count, 1);