Joel Enanod Jr
Joel Enanod Jr

Reputation: 669

PHP Loop determine 4th iteration but if the iteration is less than 4 echo something

Heres the scenario, I have array with 7 items and I want to separate them in every fourth iteration.. just like this

    $counter2 = 0;
    $counter3 = 0;
    $counter4 = 0;
    $sample_array = array('Aso','Pusa','Daga','Kuting','Tuta','Bubwit','Boom');
    foreach($sample_array as $sample_array_value)
    {
        if(++$counter4 % 4 == 0)
        {
            echo $sample_array_value;
            echo "</div>";
        }
        elseif(++$counter3 % 3 == 0)
        {
            echo $sample_array_value;
        }
        elseif(++$counter2 % 2 == 0)
        {
            echo $sample_array_value;
        }
        else
        {
            echo "<div>";
            echo $sample_array_value;
        }
    }

The out put will be div AsoPusaDagaKuting /div div TutaBubwitBoom

The problem is when it ends in iteration that doesn't count 4 it doesn't give the separator ending..

I need it to output div AsoPusaDagaKuting /div div TutaBubwitBoom /div

Thanks in advance...

Upvotes: 2

Views: 229

Answers (3)

OIS
OIS

Reputation: 10033

You can split it with array_chunk, implode the new subarrays of 4 with array_map, then echo it with implode.

$sample_array = array('Aso','Pusa','Daga','Kuting','Tuta','Bubwit','Boom');
echo "<div>", implode("</div><div>", array_map("implode", array_chunk($sample_array, 4))), "</div>";

Result:

<div>AsoPusaDagaKuting</div><div>TutaBubwitBoom</div>

Upvotes: 3

Sougata Bose
Sougata Bose

Reputation: 31739

You are printing the values inside every condition, then why not use echo once outside any condition? Also you want to close and open a div tag for the forth element, then only 1 counter would do the trick. Only this will work -

$sample_array = array('Aso','Pusa','Daga','Kuting','Tuta','Bubwit','Boom');
$i = 0;
echo "<div>";
foreach($sample_array as $sample_array_value)
{
    if($i > 0 && $i % 4 == 0)
    {
        echo "</div><div>";
    }
    echo $sample_array_value;
    $i++;
}
echo "</div>";

Output

<div>AsoPusaDagaKuting</div><div>TutaBubwitBoom</div>

Upvotes: 2

Serge
Serge

Reputation: 417

Try this:

$i = 0;
foreach($sample_array as $sample_array_value)
{
    if(++$counter4 % 4 == 0)
    {
        echo $sample_array_value;
        echo "</div>";
    }
    elseif(++$counter3 % 3 == 0 || ++$counter2 % 2 == 0)
    {
        echo $sample_array_value;
    }
    else
    {
        echo "<div>";
        echo $sample_array_value;
    }

    $i++;
}

if ($i % 4 != 0) {
    echo "</div>";
}

Upvotes: 2

Related Questions