php - 星级评分,半星支持
问题描述
我在渲染星级时遇到了问题,希望能对我的问题有更多的关注。我的正常评级对整数工作得很好,但我很难显示半星。例如,我创建了一个为我提供 0-5 评级的服务,所以我得到一个像 2.5、3 或 5 等的值......
在我去创建一个 switch case 并为每个变体创建一个 svg 之前,我希望能得到一点指针。以下是我目前所拥有的,任何提示将不胜感激。
<?php
for ($i = 1; $i <= $totalRating; $i++) {
if($starRating < $i ) {
echo "<img src=\"/icons/star-empty.svg\">";
}
else {
echo "<img src=\"/icons/star.svg\">";
}
}
?>
理想情况下,我想在循环结束时添加一个条件并检查一半并回显“”;
解决方案
可能有一种更简单的方法来做到这一点,但这很有效,检查是否$starRating
是一个浮点数,然后将其四舍五入并检查是否$i
将半星放置在正确的位置。
<?php
$totalRating = 5;
$starRating = 2.5;
for ($i = 1; $i <= $totalRating; $i++) {
if($starRating < $i ) {
if(is_float($starRating) && (round($starRating) == $i)){
echo "<img src=\"/icons/star-half.svg\">";
}else{
echo "<img src=\"/icons/star-empty.svg\">";
}
}else {
echo "<img src=\"/icons/star.svg\">";
}
}
?>
推荐阅读
- c# - 检查传递给 `AttributeUsageAttribute` 构造函数的参数
- javascript - 一种可靠的国际化方法如何能够将一个或多个单词从一种语言映射到另一种语言?
- c# - 如何以解决不稳定流响应的方式使用 TcpClient
- c - 我可以将包含字符的 malloc 分配变量转换为文件吗
- spring - Javax.validation 抛出 500 错误而不是 400
- node.js - 在 gulp 任务后无法在 vscode 上为 typescript 运行调试器,调试器运行未编译的代码
- vue.js - Nuxt基于域名的动态布局?
- macos - Mac 的 Clickhouse 安装失败:“不支持 AppleClang,您应该从 brew 安装 clang。”
- javascript - 在使用隐藏画布上传之前旋转图像
- python - 在 Python 中比较两个字典的值,并返回差值大于 2 的值的键