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

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

Fatal error: Unsupported operand types on line 97 

Его вокруг этой области кода, перечисленных ниже. При необходимости я могу указать полный код.

PHP-код

 $total_rating_points = mysqli_fetch_array($result); 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)'; } 

Вот линия 97

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

Вот полный код.

 function getRatingText(){ $dbc = mysqli_connect ("localhost", "root", "", "sitename"); $page = '3'; $sql1 = "SELECT COUNT(*) 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 COUNT(*) 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; } $total_rating_points = mysqli_fetch_array($result); 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)'; } } 

Solutions Collecting From Web of "Неустранимая ошибка: неподдерживаемые типы операндов"

$total_rating_points – это массив. вы не можете разделить его на число.

(отредактирован, так как запрос MySQL был добавлен в вопрос)

Вы использовали mysql_fetch_array чтобы получить результат от MySQL, так как имя предполагает, что возвращает массив. Вы не можете делать такую ​​математику на массивах.

Вы хотите изменить свой запрос MySQL на это:

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

Измените код mysql_fetch_array на это:

  $total_rating_points = mysql_result($result, 0, "count"); 

Это вернет фактическое число, которое вы затем можете использовать для математики. Измените оба ваших запроса на этот формат, и вам должно быть хорошо идти.

Обычно это происходит, когда тип одной из ваших переменных является тем, чего вы не ожидаете.

 $x = "8"; $y = 4; $x / $y; // this is OK, PHP converts "8" to 8 $x = new FooObject(); $y = 4; $x / $y; // PHP says "wtfmate??" 

$total_rating_points переменные $total_rating_points и $total_ratings :

 var_dump($total_rating_points); var_dump($total_ratings); 

.. затем работать в обратном направлении через свой код (при необходимости проверять debug_backtrace() ), чтобы найти, где он пошатнулся.

Edit: duhhh .. Я только что посмотрел на ваш код и увидел проблему. $total_rating_points – это массив, и это является причиной проблемы. Как вы делите массив на число? Ответ: вы не можете.

Вы хотите разделить каждый из элементов массива на $total_ratings ? например:

 // input: [2, 4, 6, 16] / 2 // output: [1, 2, 3, 8] function divideArrayMembers($arr, $denominator) { $ret = array(); foreach ($arr as $key => $val) { $ret[$key] = $val / $denominator; } return $ret; } 

… или вы хотите разделить итог?

 input: [2, 4, 6, 16] / 2 output: 14 // (2 + 4 + 6 + 16) / 2 function divideTotal($arr, $denominator) { return array_sum($arr) / $denominator. } 

Используйте array_sum() для $total_rating_points и $total_ratings .

 if($_REQUEST['cityCode'] != ''){ $_SESSION['Cri_locations'] = $_REQUEST["s"]; $_SESSION['Cri_DateFrom'] = $_REQUEST["startDate"]; $_SESSION['Cri_DateTo'] = $_REQUEST["endDate"]; $what_to_search_id =str_replace("AREA-","",$_REQUEST["cityCode"]); $total_adults =0; $total_childs =0; $child_ages =0; $no_of_room =0; for($i=1;$i<=$_REQUEST["Cri_noofRooms"];$i++){ $check_adults =$_REQUEST['adults-r'.$i.'']; if($check_adults>0){ $adults =$_REQUEST['adults-r'.$i.'']; $childs =$_REQUEST['childs-r'.$i.'']; $childAge =$_REQUEST['childAge-r'.$i.'']; $packs_arr[] =array('adults'=>$adults,'childs'=>$childs,'childAge'=>$childAge); $total_adults =$total_adults+$adults; $total_childs =$total_childs+$childs; $child_ages =$child_ages+$childAge;//error accours here pls help $no_of_room =$no_of_room+1; } }