2012-01-06 20 views
23

Necesito un poco de ayuda con un bucle foreach.PHP - Agregar divs a un bucle foreach cada 4 veces

Básicamente lo que tengo que hacer es ajustar un div alrededor de la salida de los datos cada 4 bucles.

tengo el siguiente bucle:

foreach($users_kicks as $kicks) { 
    echo $kicks->brand; 
} 

Por cada 4 veces ecos eso quiero envolverlo en un lo que al final se verá así:

<div> 
    kicks brand 
    kicks brand 
    kicks brand 
    kicks brand 
</div> 
<div> 
    kicks brand 
    kicks brand 
    kicks brand 
    kicks brand 
</div> 
<div> 
    kicks brand 
    kicks brand 
    kicks brand 
    kicks brand 
</div> 

y pronto.

Saludos

Respuesta

94
$count = 1; 
foreach($users_kicks as $kicks) 
{ 
    if ($count%4 == 1) 
    { 
     echo "<div>"; 
    } 
    echo $kicks->brand; 
    if ($count%4 == 0) 
    { 
     echo "</div>"; 
    } 
    $count++; 
} 
if ($count%4 != 1) echo "</div>"; //This is to ensure there is no open div if the number of elements in user_kicks is not a multiple of 4 
16

Try operador% de módulo.

$i=1; 
//div begins 
foreach($users_kicks as $kicks) { 
    if($i % 4 ==0) 
    { 
     //div ends 
     //div begins 
    } 
    echo $kicks->brand; 
    $i++; 
} 
//div ends 
+1

Esto funcionó muy bien para me anima –

0

una pequeña modificación a la respuesta de AVD para asegurarse de que no hay DIV vacío si matriz está vacía o es recuento se factor de 4 ...

if($lastRec=count($user_kicks)){ 
    echo '<div>'; 
    $i=1; 
    foreach($users_kicks as $kicks) { 
    if(($i % 4 == 0) && ($i<$lastRec)) echo '</div><div>'; 
    echo $kicks->brand; 
    $i++; 
    } 
    echo '</div>'; 
} 
79

Esta respuesta es muy tarde - pero en el caso de personas ven - esta es una solución más limpia, no hay contadores desordenado y if declaraciones:

foreach (array_chunk($users_kicks, 4, true) as $array) { 
    echo '<div>'; 
    foreach($array as $kicks) { 
     echo $kicks->brand; 
    } 
    echo '</div>'; 
} 

se puede leer una pelea array_chunk on php.net

1

también puede utilizar array_chunk que cortó matriz por bloques

$blocks = array_chunk($users_kicks, 4); 
foreach ($blocks as $block) { 
    echo '<div>'; 
    foreach ($block as $kicks) { 
     echo $kicks->brand; 
    } 
    echo '</div>'; 
} 
Cuestiones relacionadas