【发布时间】:2018-03-21 00:55:24
【问题描述】:
我有以下 PHP 代码,这个 PHP 代码生成 5 个 li 标签
<?php
function calculate_stars($max, $rating){
$full_stars=floor($rating);
$half_stars = ceil($rating-$full_stars);
$gray_stars = $max-($full_stars + $half_stars);
return array ($full_stars, $half_stars, $gray_stars);
}
function display_star($rating){
$output="";
$number_stars = calculate_stars(5,$rating);
$full = $number_stars[0];
$half = $number_stars[1];
$gray = $number_stars[2];
$output ='<ul class="star-rating">';
if($gray)
for ($i=0;$i<$gray;$i++)
{
$output .= '<li class="star-icon">☆</li>';
}
if($half){
$output .= '<li class="star-icon half">☆</li>';
}
if($full){
for($i=0; $i<$full;$i++)
{
$output .= '<li class="star-icon full">☆</li>';
}
}
$output .='</ul>';
return $output;
}
echo display_star(0.3);
exit;
?>
结果:
<ul class="star-rating">
<li class="star-icon">☆</li>
<li class="star-icon">☆</li>
<li class="star-icon">☆</li>
<li class="star-icon">☆</li>
<li class="star-icon half">☆</li>
</ul>
关于
$half和$full的说明
变量$half添加类class="star-icon half"结果:
变量$full添加类class="star-icon full"结果:
半星相当于:0.51.52.53.54.5
满星相当于:12345
而这一切都是通过以下方式控制的:
echo display_star(0.5);
现在我的问题
如何根据 php display_star(4.5); 的值按照以下顺序生成 10 个 li 标签,尊重它们的数据和类?
在要生成的新代码中,必须在所有 li 类 class="c-rating__item" 和 left 类中交换一个(或传递 li )和 data-index 按原样顺序,在此方式必须通过 php display_star(0.5); 的这个值生成我的 html 代码。
<ul class="c-rating">
<li class="c-rating__item is-active left" data-index="0"></li>
<li class="c-rating__item" data-index="1"></li>
<li class="c-rating__item left" data-index="2"></li>
<li class="c-rating__item" data-index="3"></li>
<li class="c-rating__item left" data-index="4"></li>
<li class="c-rating__item" data-index="5"></li>
<li class="c-rating__item left" data-index="6"></li>
<li class="c-rating__item" data-index="7"></li>
<li class="c-rating__item left" data-index="8"></li>
<li class="c-rating__item" data-index="9"></li>
</ul>
中间的星星相当于下面的data-index02468
而is-active类是填充所有星或半星的全局管理器。
如果我们生成一个评级为display_star(3.5); 的html代码,结果应该如下:
<ul class="c-rating">
<li class="c-rating__item is-active left" data-index="0"></li>
<li class="c-rating__item is-active" data-index="1"></li>
<li class="c-rating__item is-active left" data-index="2"></li>
<li class="c-rating__item is-active" data-index="3"></li>
<li class="c-rating__item is-active left" data-index="4"></li>
<li class="c-rating__item is-active" data-index="5"></li>
<li class="c-rating__item is-active left" data-index="6"></li>
<li class="c-rating__item" data-index="7"></li>
<li class="c-rating__item left" data-index="8"></li>
<li class="c-rating__item" data-index="9"></li>
</ul>
注意:here show two examples full stars and middle star类的css样式要深入了解。
【问题讨论】:
-
你能解释一下什么是 $half 和 $full 吗?
-
@AmLy 通过 php 以值的方式添加类的样式,有趣的是认为这只能使用 jquery 来完成
-
@AmLy 更新了我的答案...希望对您有所帮助
标签: php