Seb Gy
Seb Gy

Reputation: 140

PHP loop modulo

I would like to make this in a loop:

<div class="global">
    <div class="left">1</div>
    <div class="right">2</div>
</div>
<div class="global">
    <div class="left">3</div>
    <div class="right">4</div>
</div>
<div class="global">
    <div class="left">5</div>
    <div class="right">6</div>
</div>
<div class="global">
    <div class="left">7</div>
    <div class="right">8</div>
</div>
<div class="global">
    <div class="left">9</div>
    <div class="right">10</div>
</div>

I know do something link this :

for($i=0;$i<4;$i++){
    if($i %2){
        $classe='class="right"';
    }
    else{   
        $classe='class="left"';
    }

    echo "<div ".$classe." >".$i."</div>";
}

which result:

<div class="left">1</div>
<div class="right">2</div>
<div class="left">3</div>
<div class="right">4</div>

How Can I integrate the div "global" between ?

Thanks a lot for your help

Upvotes: 2

Views: 1300

Answers (4)

Seb Gy
Seb Gy

Reputation: 140

This code works :

echo '<div class="global">';  //start the first global div

for($i=0;$i<7;$i++){
    if($i %2){
        $classe='class="right"';
    }
    else{   
        $classe='class="left"';
    }

    echo "<div ".$classe." >".$i."</div>";
    if($i %2)
    {
        //after each "right" div, close and open a new global div
        echo "</div>\n<div class=\"global\">";
    }
}

echo '</div>';

Upvotes: 0

lll
lll

Reputation: 12889

I like printf.

$i=1;
while ($i < 8) {
    printf('<div class="global"><div class="left">%d</div><div class="right">%d</div></div>', $i++, $i++);
}

Edit: Although this doesn't really answer the OP question, and none of the other answers (yet) use modulus as per the question title. So, here is another far more ugly way :)

echo '<div class="global">';

for($i=0;$i<8;$i++){
    if ($i %2) {
        $classe='right';
        $sep='</div><div class="global">';
    }
    else{   
        $classe='left';
        $sep='';
    }

    printf('<div class="%s">%d</div>%s', $classe, $i+1, $i<7?$sep:'');
}

echo '</div>';

Upvotes: 1

Surreal Dreams
Surreal Dreams

Reputation: 26380

You just need a little extra...

echo '<div class="global">';  //start the first global div

for($i=0;$i<4;$i++){
    if($i %2){
        $classe='class="right"';
    }
    else{   
        $classe='class="left"';
    }

    echo "<div ".$classe." >".$i."</div>";
    if($i %2)
    {
        //after each "right" div, close and open a new global div
        echo "</div>\n<div class=\"global\">";
    }
}

echo '</div>';  //close the final global div

You can also compact the whole thing a bit:

echo '<div class="global">';  //start the first div

for($i=0;$i<4;$i++)
{
    if($i %2)
    {
        echo "<div class=\"right\" >$i</div>\n</div>\n<div class=\"global\">";
    }
    else
    {
        echo "<div class=\"right\" >$i</div>";
    }
}

echo '</div>';  //close the final global div

Upvotes: 1

Arnaud Le Blanc
Arnaud Le Blanc

Reputation: 99919

Iterate two by two:

for ($i = 1; $i <= 4; $i += 2) {
    echo '<div class="global">';
    echo '<div class="left">' . $i . '</div>'
    echo '<div class="right">' . ($i+1) . '</div>'
    echo '</div>';
}

Upvotes: 2

Related Questions