平均评级系统的逻辑不起作用

时间:2013-11-20 23:04:14

标签: php wordpress

我正在尝试计算个人1-5个评分的平均值。我试图通过将注释总数保存到变量$no_of_comments = get_comments_number( $post_id );而不是计算for循环中的总评分来实现此目的

for ($i=get_comments_number(0); $i <= $no_of_comments; $i++) { 
    $tot_stars +=  get_comment_meta( get_comment_ID(), 'rating', true );
}

然后计算平均评分$avg_rating = ($tot_stars / $no_of_comments); 最后我开始显示我的评分

echo '<p id="avg-contain">';
            for ( $i = 1; $i <= 5; $i++ ) {
                if ( $i <= $avg_rating ) {
                    echo '<img src="' . plugins_url( 'images/icon.png' ) . '" />';
                } else {
                    echo '<img src="' . plugins_url( 'images/grey.png' ). '" />';
                }
            }
echo '</p>';

我不确定为什么这会产生所有灰色星星,我使用相同的echo逻辑设置了我的个人等级,所以它必须是我上面的PHP中的逻辑错误。也许$avg_rating不是一个整数?

1 个答案:

答案 0 :(得分:0)

您的评论循环使用看似错误的逻辑。您只是从get_comments_number( 0 )迭代到$no_of_comments,但实际上并没有在任何地方收到您的个人评论。

请改为:

$args = array(
    'ID' => $post_id,
    'status' => 'approve',
);
$comments = get_comments( $args );
foreach( $comments as $comment ) { 
    $tot_stars +=  get_comment_meta( $comment->comment_ID, 'rating', true );
}

参考