2009-11-24 67 views
10

Me gustaría mostrar datos, dos columnas por fila durante mi foreach. Me gustaría que mi resultado se vea como el siguiente:Cómo mostrar dos columnas de tabla por fila en el bucle de php

<table> 
<tr><td>VALUE1</td><td>VALUE2</td></tr> 
<tr><td>VALUE3</td><td>VALUE4</td></tr> 
<tr><td>VALUE5</td><td>VALUE6</td></tr> 
</table> 

Cualquier ayuda sería muy apreciada.

Respuesta

10
$i=0; 
foreach ($x as $key=>$value) 
    { 
    if (fmod($i,2)) echo '<tr>'; 
    echo '<td>',$value,'</td>'; 
    if (fmod($i,2)) echo '</tr>'; 
    $i++; 
    } 

esta salida voluntad TR (fila) de cada segunda vez

PS: No he probado el código, así que tal vez tendrá que añadir! signo antes de fmod, si no da salida TR en la primera iteración, pero en la segunda iteración al principio ...

+0

Gracias, esto funciona muy bien. Sí, tuve que agregar! Fmod para el primero. – brad

+4

No funciona ... –

+3

@ FredStevens-Smith: En lugar de decir "No funciona", ¿por qué no elaboras un poco? ¿Por qué no funciona? ¿Has recibido un error? ¿Cómo podría mejorarse? – TheCarver

37

Puede dividir una matriz de datos en matrices más pequeñas, en este caso de longitud 2, array_chunk() por cada fila.

<table> 
<?php foreach (array_chunk($values, 2) as $row) { ?> 
    <tr> 
    <?php foreach ($row as $value) { ?> 
     <td><?php echo htmlentities($value); ?></td> 
    <?php } ?> 
    </tr> 
<?php } ?> 
</table> 

Tenga en cuenta que si tiene un número impar de valores, esto dejará una última fila con una sola celda. Si desea agregar una celda vacía si es necesario, puede verificar la longitud de $row en el exterior foreach.

+0

Esto funcionará muy bien en otro script que tengo. Gracias. – brad

+0

Esto funciona bien gracias hombre ... –

+1

No funciona con iteradores – Oleg

2

Esto le daría una gran mesa y para el bucle concept--

<table border="1" cellspacing="0" cellpadding="2"> 

<?php 

    for($x=1; $x<=20; $x++) 
     { 
     echo "<tr>"; 
     for($y=1; $y<=20; $y++) 
      { 
      echo "<td>"; 
      echo $x*$y; 
      echo "</td>"; 
      } 
     echo "</tr>"; 
     } 
?> 
</table> 
+0

No creo que esto sea exactamente lo que quería el OP ... Lea la pregunta. – BenjiWiebe

-1
<table> 
<?php 
    $i=0; 
    foreach ($x as $key=>$value) 
    { 
     if (!$i%2) echo '<tr>'; 
     echo '<td>',$value,'</td>'; 
     if ($i%2) echo '</tr>'; 
     $i++; 
    } 
?> 
</table> 
+0

debería = if ($ i% 2 == 0) echo ''; –

Cuestiones relacionadas