PHP的最佳星级评级解决方案

use*_*137 2 php

我想知道编写以下PHP代码的最佳和最有效的方法是什么?

    if ($av == 1) echo '/images/1-star.png';
    if ($av > 1 && < 2) echo '/images/1-half-star.png';
    if ($av == 2) echo '/images/2-star.png';
    if ($av > 2 && < 3) echo '/images/2-half-star.png';
Run Code Online (Sandbox Code Playgroud)

遵循同样的模式,最多5星.

Jin*_*iel 6

这可能不是最有效的方式。但我发现它是干净的代码。检查这个。

function renderStarRating($rating,$maxRating=5) {
    $fullStar = "<li><i class = 'fa fa-star'></i></li>";
    $halfStar = "<li><i class = 'fa fa-star-half-full'></i></li>";
    $emptyStar = "<li><i class = 'fa fa-star-o'></i></li>";
    $rating = $rating <= $maxRating?$rating:$maxRating;

    $fullStarCount = (int)$rating;
    $halfStarCount = ceil($rating)-$fullStarCount;
    $emptyStarCount = $maxRating -$fullStarCount-$halfStarCount;

    $html = str_repeat($fullStar,$fullStarCount);
    $html .= str_repeat($halfStar,$halfStarCount);
    $html .= str_repeat($emptyStar,$emptyStarCount);
    $html = '<ul>'.$html.'</ul>';
    return $html;
}
Run Code Online (Sandbox Code Playgroud)


Com*_*ess 5

就像这样使用:

$n = is_int($av) ? $av : floor($av) + 0.5;
echo '/images/'.$n.'-star.png';
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

每行剪切图像并将其命名为"1-star.png","1.5-star.png","2-star.png","2.5-star.png","3-start.png","3.5- star.png"依此类推......