Как я могу чередовать элементы div в цикле php foreach

У меня есть набор массивов, из которых я возвращаюсь из базы данных, я использую цикл 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 ?>