Mam następujący kod PHP kod PHP generuje 5 li
tagówCzy możesz wyjaśnić, jak przenieść/wygenerować kod html na inny kod HTML - PHP?
<?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;
?>
Wynik:
<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>
Wyjaśnienie o
$half
i$full
Zmienna $half
class add class="star-icon half"
wynik:
Zmienna $full
class add class="star-icon full"
wynik:
Połowa gwiazda jest odpowiednikiem: 0.5
1.5
2.5
3.5
4.5
pełnej gwiazdy jest równoznaczne z: 1
2
3
4
5
A wszystko to jest sterowane za pomocą:
echo display_star(0.5);
Można zrobić testy here w kodzie PHP i wygenerowanego kodu HTML można wkleić here aby zobaczyć wyniki.
Teraz moje pytanie
Jak mogę wygenerować 10 li
tagi w następującej kolejności przestrzegając swoich danych i klas według wartości php display_star(4.5);
?
w nowym kodeksie wygenerowania musi mieć we wszystkich li
klasy class="c-rating__item"
i klasy left
zamiana jednego (lub przechodzącej li
) i data-index
w kolejności, jak to jest w ten sposób musi wygenerować mi kod HTML przez oznacza o wartości php display_star(0.5);
.
<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>
Gwiazdy w środku są równoważne z następującymi danymi-index 0
2
4
6
8
I klasa is-active
to globalny menedżer wypełniania wszystkich gwiazd lub połowa gwiazdy.
Praktyczny przykład jeśli mamy wygenerować kod HTML ratingu display_star(3.5);
wynik powinien być następujący:
<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>
Uwaga: style css klasy here show two examples full stars and middle star aby dostać się do bardziej dokładnie zrozumieć.
można wyjaśnić, co jest $ i $ połowy pełna? – Krish
@AmLy dodaj styl klas za pomocą php za pomocą wartości, ciekawe jest, że można to zrobić tylko za pomocą jquery – May
@AmLy zaktualizowałem moją odpowiedź ... mam nadzieję, że to ci pomoże – Krish