2010-11-23 24 views
2

Je cherche à montrer les données en lignes de trois comme celui-ci (notez le nombre d'articles ne sera pas toujours même):PHP écho en rangées de trois?

 
abcd defg hijk 
lmno pqrs tuvw 
xyz1 2345 6789 
1011 1213 

Je me bats pour obtenir le droit logique de le faire (ceci est dans une boucle foreach()).

Je sais que je dois avoir une logique if($i %3 == 0) là-dedans .. Mais je suis un peu coincé.

Quelqu'un peut-il m'aider?

Répondre

3
$a = array('abcd','defg','hijk','lmno'); 
for ($i = 0; $i < count($a); $i++) { 
    if ($i && $i % 3 == 0) 
    echo '<br />'; 
    echo $a[$i].' '; 
} 
0

pseudo-code car je ne sais pas PHP (et vous demandé la logique qui tend à être la même dans toutes les langues de procédure):

perline = 3 
i = 0 
foreach item in list: 
    if i > 0 and (i % perline) == 0: 
     print newline 
    if (i % perline) != 0: 
     print space 
    print item 
    i = i + 1 

Ce sera à la fois la sortie d'un séparateur de ligne avant les éléments 3, 6, 9 et ainsi de suite (le premier élément étant 0) et placez tout espacement souhaité avant les deuxième et troisième éléments sur chaque ligne. Vous pouvez simplement utiliser une valeur différente pour perline pour modifier le nombre de sorties sur chaque ligne.

1

Il est préférable d'utiliser une boucle for comme:

// run $i for each index in the array. 
for($i=0 ; $i<count($arr) ; $i++) { 

     // if $i is non-zero and is divisible by 3 print a line break. 
     if ($i && $i % 3 == 0) { 
       echo "<br />"; 
     } 

     // print the element at index $i. 
     echo $arr[$i].'&nbsp;'; 
} 

Code in action