2009-11-24 9 views
10

Je voudrais afficher des données, deux colonnes par ligne pendant ma foreach. Je voudrais que mon résultat ressemble à ceci:Comment afficher deux colonnes de tableau par ligne en boucle 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> 

Toute aide serait grandement appréciée.

Répondre

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

cette volonté sortie TR (ligne) chaque seconde fois

ps: je n'ai pas testé le code, vous alors peut-être besoin d'ajouter! signe avant fmod, s'il ne sort pas TR à la première itération, mais à la deuxième itération au début ...

+0

Merci, cela fonctionne très bien. Oui, je devais ajouter! Fmod pour le premier. – brad

+4

Ne fonctionne pas ... –

+3

@ FredStevens-Smith: Au lieu de dire «Ne fonctionne pas», pourquoi ne pas élaborer un peu. Pourquoi ça ne marche pas? Avez-vous reçu une erreur? Comment pourrait-il être amélioré? – TheCarver

37

Vous pouvez utiliser array_chunk() pour diviser un tableau de données en plus petits tableaux, dans ce cas de longueur 2, pour chaque rangée.

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

Notez que si vous avez un nombre impair de valeurs, cela laissera une dernière ligne avec une seule cellule. Si vous souhaitez ajouter une cellule vide si nécessaire, vous pouvez vérifier la longueur de $row dans le foreach externe.

+0

Cela fonctionnera très bien dans un autre script que j'ai. Je vous remercie. – brad

+0

Ce travail grand merci l'homme ... –

+1

Ne fonctionnera pas avec les itérateurs – Oleg

2

Cela vous donnera une grande table et boucle 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

Je ne pense pas que ce soit exactement ce que l'OP voulait ... Lire la question. – 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

il devrait = if ($ i% 2 == 0) echo ''; –