2 回答

TA貢獻1818條經驗 獲得超8個贊
我將創建一個簡單的函數,它根據給定的評級返回給定星星的填充水平:
<?php
function getStarClass(int $starPosition, float $rating): string
{
if ($starPosition <= $rating) {
return 'filled';
}
if ($starPosition - $rating < 1) {
return 'half-filled';
}
return 'empty';
}
$avrating = 3.5;
?>
<?php for ($star = 1; $star <= 5; $star++): ?>
<span class="dashicons dashicons-star-<?= getStarClass($star, $avrating) ?>"></span>
<?php endfor ?>
請注意,我還使用 PHP 的替代語法來顯示 HTML,因為我相信它更適合該目的,但這完全是可選的。

TA貢獻1786條經驗 獲得超11個贊
您可以添加一個額外的子句,檢查循環是否大于評級但小于下一個評級作為半啟動評級...
$stars = '';
for ( $i = 1; $i <= 5 ; $i ++ ) {
if ( $i <= $avrating ) {
$stars .= '<span class="dashicons dashicons-star-filled"></span>';
} elseif ( $i < $avrating + 1 && $i > $avrating ) {
$stars .= '<span class="dashicons dashicons-star-half"></span>';
} else {
$stars .= '<span class="dashicons dashicons-star-empty"></span>';
}
}
您還可以通過將其作為部件添加來減少大量重復的樣板 HTML...
$stars = '';
for ( $i = 1; $i <= 5 ; $i ++ ) {
$stars .= '<span class="dashicons dashicons-star-';
if ( $i <= $avrating ) {
$stars .= 'full';
} elseif ( $i < $avrating + 1 && $i > $avrating ) {
$stars .= 'half';
} else {
$stars .= 'empty';
}
$stars .= '"></span>';
}
- 2 回答
- 0 關注
- 167 瀏覽
添加回答
舉報