¿Cómo puedo alternar elementos div en php foreach loop?

Tengo un conjunto de matrices que estoy obteniendo de la base de datos, estoy usando un bucle foreach php para foreach . Si devuelvo 5 matrices [1, 2, 3, 4, 5] , cada una de las cuales contiene un (hora, estado, ubicación), quiero dar estilo a todas las matrices pares con un cierto div y cada uno impar con un div diferente. ¿Cómo haría esto?

Supongo que usaría el bucle con el operador de módulo.

 for ($i = 1; $i <= $count; $i++) if ($i % 2 == 0) { } else { } } 

  

Si se trata de la matriz 1, 3, 5.

  

Si es la matriz 2, 4

 

No tiene que usar un bucle foreach para enumerar todos los elementos de una matriz:

 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 } } 

Recomiendo que las clases de CSS sean "impares" y "pares" para los divs y luego los estilo en un archivo separado. Si lo desea, también puede utilizar pseudo clases de CSS3 :nth-child(odd) y :nth-child(even) .

Parece razonable, pero:

 background-color: #blue; 

no tiene sentido El ‘#’ se usa como un prefijo para los valores de color hexadecimales, mientras que usted tiene un nombre de color, por lo que querría:

 background-color: blue; 

o

 background-color: #0000ff; 

Además, ¿sabe usted que, en los navegadores modernos (es decir, IE9 + ), los elementos de estilo alternativo se pueden lograr únicamente a través de CSS3, por ejemplo,

 div:nth-child(odd) { background-color: blue; } 

Comprobar

Mientras mantenga un contador, su prueba de módulo puede incluso hacerse en línea, dentro del ciclo foreach:

 $ cat divloop.php %s
\n"; $count=0; foreach ($a as $item) { printf($fmt, ++$count % 2 == 0 ? "even" : "odd", $item); }

Y los resultados:

 $ php divloop.php 
one
two
three
four
five
$

En este punto, es más seguro utilizar clases explícitas en lugar de confiar en la funcionalidad del navegador que puede no estar disponible en todos los ámbitos. Al menos, todo el mundo parece entender CSS básico. 🙂

 .reservation { font-size: 20px; float: left; } .even { background-color: #blue; } .odd { background-color: #red; } 

¿Qué pasa si pones el contador en el foreach?

 $count = 0;  if ($count % 2 == 0){ //even div }else { // odd div } $count++;