#php
#php
Вопрос:
<?php foreach ($fields as $id => $field): ?>
<div class="<?php print $field->class; ?>">
<?php print $field->content; ?>
</div>
<?php endforeach; ?>
результат цикла выглядит следующим образом,
<div class="1">.....</div>
<div class="2">.....</div>
<div class="3">.....</div>
<div class="4">.....</div>
<div class="1">.....</div>
<div class="2">.....</div>
<div class="3">.....</div>
<div class="4">.....</div>
<div class="1">.....</div>
<div class="2">.....</div>
<div class="3">.....</div>
<div class="4">.....</div>
я хочу сгруппировать первый <div>
следующим образом.
<div class="group">
<div class="1">.....</div>
<div class="2">.....</div>
<div class="3">.....</div>
</div>
<div class="4">.....</div>
как сделать предварительный
Ответ №1:
должно быть похоже, просто используйте foreach
вместо for
<style>
.group{
background: red;
margin-top: 10px;
float: left;
}
</style>
<?php $count=0; ?>
<?php for($i=0; $i<= 20; $i ): ?>
<?php if($count == 0): ?>
<div class="group">
<?php endif; ?>
<?php $count ?>
<div class="<?php echo $i; ?>"><?php echo $i; ?></div>
<?php if($count == 4): ?>
<?php $count=0; ?>
</div>
<?php endif; ?>
<?php endfor; ?>
Ответ №2:
Если ваша $field->class
переменная всегда находится в диапазоне от 1 до 4, вы можете сделать следующее. В противном случае вам нужно использовать ручной счетчик.
<?php foreach ($fields as $id => $field): ?>
<?php if ($field->class == 1) :?> <div class="group"> <?php endif; ?>
<div class="<?php print $field->class; ?>">
<?php print $field->content; ?>
</div>
<?php if ($field->class == 4) :?> </div> <?php endif; ?>
<?php endforeach; ?>
Пользовательский счетчик
<?php $counter = 0; ?>
<?php foreach ($fields as $id => $field): $counter ;?>
<?php if ($counter == 1) :?> <div class="group"> <?php endif; ?>
<div class="<?php print $field->class; ?>">
<?php print $field->content; ?>
</div>
<?php if ($counter == 4) : $counter = 1?>
</div>
<?php endif; ?>
<?php endforeach; ?>
Комментарии:
1. <?php endif; $counter = 1 ?>, почему код добавляет $ counter = 1 , спасибо.
2. Извините, это должно быть внутри условия, а не снаружи. Исправлено. Вы должны использовать этот метод, только если имя вашего класса может отличаться.
3. я все еще не знаю, зачем добавлять $counter = 1<?php if ($counter == 4): $counter = 1?> в этой строке
4. По сути, это сбрасывает счетчик на 1 каждый раз, когда он достигает 4. Поскольку вы хотите, чтобы DIVS были сгруппированы по 4.
Ответ №3:
попробуйте (необработанный код)
<div class="group">
<?php $c=0; foreach ($fields as $id => $field) : ?>
<?php if($c%3==0) : ?> </div><div class="group"><?php endif; ?>
<div class="<?php print $field->class; ?>">
<?php print $field->content; ?>
</div>
<?php $c ; endforeach; ?>
</div>
Комментарии:
1. и как добавить закрытый </div>
2. Это потому, что на самом деле это не закрывает групповой div. Пожалуйста, исправьте свой ответ
3. ДжонП, $fields является ассоциативным массивом, если $ id не является числом. этот $id%4==0 будет бесполезен.
4. @zhuanzhou, тогда просто определите
$c=0
и$c
внутриforeach
обновите мой ответ