2010-01-16 28 views
7

Tôi tiếp tục nhận được lỗi sau và tôi đã tự hỏi cách khắc phục.Lỗi nghiêm trọng: Các loại toán hạng không được hỗ trợ

Fatal error: Unsupported operand types on line 97 

Khu vực xung quanh mã này được liệt kê bên dưới. Tôi có thể liệt kê toàn bộ mã nếu cần.

mã 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)'; 
} 

Đây là dòng 97

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

Dưới đây là toàn bộ mã.

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)'; 
    } 
} 

Trả lời

18

$total_rating_points là một mảng. bạn không thể chia nó cho một số.

+0

cách khắc phục điều này vì tôi cần chia $ total_rating_points/$ total_ratings – tEcHnUt

+1

$ total_ratings [0]/$ total_rating_points [0]. Bạn cũng có thể kiểm tra xem Count (*) có phải là hàm tổng hợp chính xác cho cả hai truy vấn không. – VolkerK

1

Điều này thường xảy ra khi loại của một trong các biến của bạn là thứ bạn không mong đợi.

$x = "8"; 
$y = 4; 
$x/$y; // this is OK, PHP converts "8" to 8 

$x = new FooObject(); 
$y = 4; 
$x/$y; // PHP says "wtfmate??" 

Dump ra các biến $total_rating_points$total_ratings:

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

.. sau đó làm việc ngược qua mã của bạn (kiểm tra debug_backtrace() nếu cần) để tìm nơi nó đã đi xiên.

Chỉnh sửa: duhhh .. Tôi vừa xem lại mã của bạn và thấy sự cố. $total_rating_points là một mảng và đây là nguyên nhân của sự cố. Làm thế nào để bạn phân chia một mảng bằng một số? Trả lời: bạn không thể.

Bạn có muốn chia từng thành viên của mảng theo $total_ratings không? ví dụ:

// 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; 
} 

... hoặc bạn có muốn chia tổng không?

input: [2, 4, 6, 16]/2 
output: 14 // (2 + 4 + 6 + 16)/2 

function divideTotal($arr, $denominator) { 
    return array_sum($arr)/$denominator. 
} 
2

(sửa chữa kể từ truy vấn MySQL đã được thêm vào câu hỏi)

Bạn đã sử dụng mysql_fetch_array để có được kết quả của bạn từ MySQL, như tên cho thấy này trả về một mảng. Bạn không thể làm toán như vậy trên mảng.

Bạn muốn thay đổi truy vấn MySQL của bạn như thế này:

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

Thay đổi mã mysql_fetch_array của bạn như thế này:

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

Đó sẽ trở lại con số thực tế, sau đó bạn có thể sử dụng cho toán học. Thay đổi cả hai truy vấn của bạn thành định dạng này và bạn nên làm tốt.

1

Sử dụng array_sum() trên $total_rating_points$total_ratings.

0
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; 

     } 
    } 
+0

Lỗi nghiêm trọng: Các loại toán hạng không được hỗ trợ (sắp tới) – pradeep

Các vấn đề liên quan