У меня есть набор массивов, из которых я возвращаюсь из базы данных, я использую цикл php foreach
чтобы пройти через них. Если я возвращаю 5 массивов [1, 2, 3, 4, 5]
, каждый из которых содержит (время, статус, местоположение), я хочу стилизовать все четные массивы с определенным div и каждым нечетным с другим div. Как мне это сделать?
Я предполагаю, что я буду использовать цикл с модульным оператором.
for ($i = 1; $i <= $count; $i++) if ($i % 2 == 0) { } else { } }
<?php foreach ($reservation as $seat) : ?>
Если это массив 1, 3, 5.
<div style="font-size:20px; background-color: #red; float:left;"> <?php echo $seat['location']; ?> <?php echo $seat['time']; ?> <?php echo $seat['status']; ?> </div>
Если это массив 2, 4
<div style="font-size:20px; background-color: #blue; float:right;"> <?php echo $seat['location']; ?> <?php echo $seat['time']; ?> <?php echo $seat['status']; ?> </div> <?php endforeach ?>
Вам не нужно использовать цикл foreach для перечисления всех элементов массива:
for ($i=1; $i <= $count; $i++) { $seat = $reservation[$i-1]; if ($i % 2 == 0) { // Do your 2 and 4 } else { // Do your 1, 3 and 5 } }
Я бы рекомендовал устанавливать классы CSS «odd» и «even» в divs, а затем стирать их в отдельный файл. Если вы хотите, вы также можете использовать псевдо-классы CSS3 :nth-child(odd)
и :nth-child(even)
.
Выглядит разумно, но:
background-color: #blue;
не имеет смысла. «#» Используется как префикс для шестнадцатеричных значений цвета, в то время как у вас есть имя цвета, поэтому вам нужно:
background-color: blue;
или
background-color: #0000ff;
Кроме того, знаете ли вы, что в современных браузерах (например, IE9 + ) альтернативные стили могут быть достигнуты исключительно через CSS3, например
div:nth-child(odd) { background-color: blue; }
Проверьте
Пока вы держите счетчик, ваш modulo-тест можно даже выполнить в строке, внутри цикла foreach:
$ cat divloop.php <?php $a=array( "one", "two", "three", "four", "five" ); $fmt="<div class='reservation %s'>%s</div>\n"; $count=0; foreach ($a as $item) { printf($fmt, ++$count % 2 == 0 ? "even" : "odd", $item); }
И результаты:
$ php divloop.php <div class='reservation odd'>one</div> <div class='reservation even'>two</div> <div class='reservation odd'>three</div> <div class='reservation even'>four</div> <div class='reservation odd'>five</div> $
На данный момент безопаснее использовать явные классы, а не полагаться на функциональные возможности браузера, которые могут быть недоступны по всем направлениям. По крайней мере, все, кажется, понимают базовые CSS. 🙂
.reservation { font-size: 20px; float: left; } .even { background-color: #blue; } .odd { background-color: #red; }
что, если вы положите счетчик в foreach.
$count = 0; <?php foreach ($reservation as $seat) : ?> if ($count % 2 == 0){ //even div }else { // odd div } $count++; <?php endforeach ?>