2009-11-24 8 views
10

Vorrei visualizzare i dati, due colonne per riga durante il mio foreach. Vorrei che il mio risultato fosse il seguente:Come visualizzare due colonne di tabelle per riga nel ciclo 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> 

Qualsiasi aiuto sarebbe molto apprezzato.

risposta

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

questa uscita volontà TR (riga) ogni seconda volta

ps: non ho ancora testato il codice, quindi forse è necessario aggiungere! firmare prima di fmod, se non viene emesso TR sulla prima iterazione, ma sulla seconda iterazione all'inizio ...

+0

Grazie, questa grande opera. Sì, ho dovuto aggiungere! Fmod per il primo. – brad

+4

Non funziona ... –

+3

@ FredStevens-Smith: Invece di dire "Non funziona", perché non elabora un po '. Perché non funziona? Hai ricevuto un errore? Come potrebbe essere migliorato? – TheCarver

37

È possibile utilizzare array_chunk() per dividere una matrice di dati in array più piccoli, in questo caso di lunghezza 2, per ogni riga.

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

Si noti che se si dispone di un numero dispari di valori, questo lascerà una riga finale con una sola cella. Se si desidera aggiungere una cella vuota se necessario, è possibile controllare la lunghezza di $row all'interno dello foreach esterno.

+0

Questo funzionerà alla grande in un altro script che ho. Grazie. – brad

+0

Funziona molto bene grazie man ... –

+1

Non funziona con gli iteratori – Oleg

2

Ciò darà grande tavolo e per il ciclo 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

Non penso che questo sia esattamente ciò che l'OP voleva ... Leggi la domanda. – 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

dovrebbe = se ($ i% 2 == 0) echo ''; –