alamin student
alamin student

Reputation: 1

warring: count(): parameter must be an array or an object that implement countable in , pleas give me a soluation

this is the error warring: count(): parameter must be an array or an object that implement countable in

function larus_user_review_print_review_badge($post_id, $echo = true) {
        
        $rating_type = 'number';
        $rating_criteria = get_post_meta( $post_id, 'user_review' . 'rating_criteria', true );
        $rating_criteria_count =  count($rating_criteria);
        
        $output = '';
        $score_array = array();
        
        if($rating_criteria){
            foreach ($rating_criteria as $criteria) {
                $score_array []= $criteria['score'];
            }
        }
        
        $final_score = array_sum($score_array);
        $final_score = $final_score / $rating_criteria_count;
        $final_score = number_format($final_score, 1, '.', '') + 0;
        $final_bar = array_sum($score_array)  / $rating_criteria_count;
        $final_bar = $final_bar * 10;

        if($rating_criteria){
        $output = '<div class="jl_review_wrapper"><div class="jl_rating_front"  data-percent="'.$final_bar.'"><span class="jl_rating_value">'. larus_user_review_calculate_score($final_score, $rating_type, true).'</span></div></div>';
        }
        if($echo == 'true') :
        print $output;
        else :
        return $output;
        endif;
}

Upvotes: 0

Views: 68

Answers (1)

Lessmore
Lessmore

Reputation: 1091

The result of get_post_meta might be null or anything else, you can cast the result to array to solve the issue.

function larus_user_review_print_review_badge($post_id, $echo = true) {

    $rating_type = 'number';
    $rating_criteria = get_post_meta( $post_id, 'user_review' . 'rating_criteria', true );
    $rating_criteria_count =  count((array)$rating_criteria); //<-cast to array
    
    $output = '';
    $score_array = array();
...

Upvotes: 1

Related Questions