2010-11-10 16 views
0

Je dois distribuer trois div alternativement à l'intérieur d'un tandis que la boucle. Le premier div a le nom de la classe boîte hdr5 et la deuxième div est box-hdr4Alterner div dans une boucle while?

Est-il possible de le faire? S'il vous plaît donnez-moi une idée.

+2

qu'en est-il de la 3e div? – ajreal

Répondre

1
$i = 0 

while (true) { 
    $class = ($i++ % 2 == 0) ? 'box-hdr5' : 'box-hdr4'; 
    echo "<div class='" . $class . "'>stuff</div>"; 
} 

% est l'opérateur de module qui renvoie le reste de la division entière. Le reste sera 0 quand $ i est divisible par 2, ce qui sera à chaque fois dans la boucle.

+0

Je suppose que c'était censé marcher, mais ça ne marche pas dans le mien. Dunno whats wrong ... –

+0

En plus de manquer un point-virgule sur la première ligne, cela fonctionne très bien. "ça ne marche pas" n'est pas le genre d'explication que vous donnez quand vous voulez que quelqu'un vous aide, car cela en dit autant sur le problème que vous rencontrez que de ne rien dire du tout. C'était juste un exemple d'une technique pour atteindre votre objectif. Qu'avez-vous fait avec et qu'est-ce qui n'a pas fonctionné? –

5

Vous avez juste besoin d'avoir un compteur et déterminer si le nombre est pair ou impair, ce qui est facilement fait avec le modulus operator.

$x = 0; 
while (/* true */) { 
    if ($x++ % 2) { 
     /* box-hdr4 */ 
    } else { 
     /* box-hdr5 */ 
    } 
} 
1

Vous ne même pas besoin de faire modulo par 2.

$alternate = false; 
while (/* true */) { 
    $alternate = !$alternate; 
    if ($alternate) { 
     // box-hdr4 
    } else { 
     // box-hdr5 
    } 
} 

Mais les réponses ci-dessus sont tout aussi bien.