php - 如何显示空星或半星?
问题描述
为了显示帖子的平均评分,我使用以下代码片段。
代码的第一部分:使用此代码,我为平均评分生成一个变量。
<?php
$post_id = get_the_ID();
$comments = get_approved_comments( $post_id );
foreach( $comments as $comment ){
$rate = get_comment_meta( $comment->comment_ID, 'rating', true );
if( isset( $rate ) && '' !== $rate ) {
$i++;
$total += $rate;
$avrating = round($total / $i, 1);
}
}
?>
代码的第二部分输出评分星。
<?php
global $post;
$stars = '';
for ( $i = 1; $i <= $avrating + 1; $i++ ) {
$width = intval( $i - $avrating > 0 ? 20 - ( ( $i - $avrating ) * 20 ) : 20 );
if ( 0 === $width ) {
continue;
}
$stars .= '<img src="mysite.com/wp-content/themes/gin_mag/img/star_little.svg" alt="">';
if ( $i - $avrating > 0 ) {
}
}
echo $stars;
?>
现在我有问题。首先,如果平均评分大于 5,例如前面的 5.3,则显示的不是 5 颗而是 6 颗星。我不明白如何解决这个问题。
第二点,如果平均评分为 2.4,则显示三颗星 (star_little.svg),或者显示两颗满星 (star_little.svg) 和一颗 (halfstar_little_half.svg) 是合乎逻辑的。我知道这可以通过 if-else 语句的检查来实现。
如我所见:如果评分超过 2 但不是 3,则显示两颗满星和一颗半星。但我不知道如何实现这一点。请帮忙。
解决方案
推荐阅读
- c - 为什么枚举的大小只对应单个值的大小?
- java - 重定向到新页面
- firebase - 使用颤振将文档添加和更新到 Firebase 时,Firebase 会收到 documentID
- ruby - Ruby 中的卢卡斯序列
- linux - bash 脚本选项解析器失败
- ios - 检测 iOS / SwiftUI 上的键盘按键事件
- postgresql - PgAdmin 不使用 Postgres 容器
- python - TypeError: write_register() 接受 3 个位置参数,但给出了 4 个
- node.js - 我可以通过 Firebase 云功能 Admin SDK 访问 twitter 身份验证数据吗?如果是这样,怎么做?
- python - 计算一个非常大的整数的素数