#php #arrays
#php #массивы
Вопрос:
У меня есть array
, в котором может быть любое количество элементов. Теперь я хочу зациклить этот массив и создать дизайн таким образом, чтобы внутри каждого из них li
могло быть 15 элементов, следующий набор li
будет создан на основе кратных 15 элементов.
Теперь в моем массиве ровно 15 элементов, а код, который я пытаюсь создать 2 li
, должен создать только 1 li
.
Может быть, моя логика слишком плоха или я что-то упускаю.
Вот мой код:-
<?php $result = array(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15); ?>
<div class="slide">
<?php $design = '<ul class="slides"><li><div class="MainSlider">';
foreach($result as $key=>$row)
{
$design .= '<div class="MainSliderPic">'.$key.'</div>';
if(($key 1)% 15 == 0){
$design .= '</div></li><li><div class="MainSlider">';
}
if(count($result) == $key 1){
$design .= '</div></li></ul>';
}
}
echo $design;
?>
</div>
Комментарии:
1.
if(($key 1)% 15 == 0){
Оператор% должен быть проблемой, это означает, что если остаток от $key, деленный на 15, равен 15, сделайте это…2. и просто немного ввода: в вашей 6-й строке вы написали ‘. $ key.’ … вы уверены, что хотите вывести ключ, а не значение? (Это можно сделать, заменив $key на $row)
3. Согласно вашему условию, у вас есть 15 записей, поэтому, когда ваше
modulo(%)
условие будет истинным, оно закроетli
и снова начнет новоеli
, и, наконец, запись завершаетli
и div, поэтому, если у вас есть15, 30, 45 ...
записи, вы получите дополнительнуюli
пустую4. @Anant: я проголосовал за каждый ответ здесь, каждый ответ дал мне что-то для изучения, поэтому, пожалуйста, прекратите пинговать каждый день, чтобы проголосовать, я не получаю именно то, что вы хотите, чтобы я сделал. Возможно, я понятия не имею, потому что я здесь новичок, поэтому, пожалуйста, извините mysite и прекратите пинговать.
5. После получения ответа вам нужно отметить один ответ как принятый. Я не говорю о голосовании, это маркировка ответа
Ответ №1:
Вы можете использовать array_chunk для достижения этой цели:
$result = array(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15);
$chunks = array_chunk($result, 15);
foreach ($chunks as $chunk) {
echo '<ul><li>';
echo implode('</li><li>', $chunk);
echo '</li></ul>';
}
Ответ №2:
Не смешивайте открытие и закрытие тегов в своем коде. Делайте это отдельно там, где оно принадлежит, например
$design = '<ul class="slides">';
$n = 0;
foreach($result as $key=>$row) {
if ($n == 0)
$design .= '<li><div class="MainSlider">';
$design .= '<div class="MainSliderPic">' . $key . '</div>';
$n;
if ($n == 15) {
$design .= '</div></li>';
$n = 0;
}
}
$design .= '</ul>';
echo $design;
Ответ №3:
Попробуйте следующий код:
<?php $result = array(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15); ?>
<div class="slide">
<?php $design = '<ul class="slides"><li><div class="MainSlider">';
foreach($result as $key=>$row)
{
$design .= '<div class="MainSliderPic">'.$key.'</div>';
if((($key 1)% 15 == 0) amp;amp; (count($result) != ($key 1))){
$design .= '</div></li><li><div class="MainSlider">';
}
if(count($result) == $key 1){
$design .= '</div></li></ul>';
}
}
echo $design;
?>
</div>