user1412777
user1412777

Reputation: 67

PHP Iterate 12 items perform echo on every third

Hi I have been chasing my tail for a while on this one and wondered if someone could solve my headache.

Basically I am rendering 12 items to the page. Each 3 items need to be wrapped in a row like:

<div class='row'>
    <div class='item'>

    </div>
    <div class='item'>

    </div>
    <div class='item'>

    </div>
</div>
<div class='row'>
    <div class='item'>

    </div>
    <div class='item'>

    </div>
    <div class='item'>

    </div>
</div>
<div class='row'>
    <div class='item'>

    </div>
    <div class='item'>

    </div>
    <div class='item'>

    </div>
</div>
<div class='row'>
    <div class='item'>

    </div>
    <div class='item'>

    </div>
    <div class='item'>

    </div>
</div>

Thanks in advance.

Hi I think some code would help:

$i=0;
foreach($posts as $p) {

$i++
}

So basically within the for each I will be outputting a row and 3 items.The results are coming from a database query. I have tried a few different approaches such as

if($i == 1) {echo "<div class='row'>";}
                    if ($counter % 4 == 0) {
                       echo "</div><div class='row'>";
                    }

However I keep failing, please note these are just snippets of code.

Upvotes: 0

Views: 80

Answers (2)

Awlad Liton
Awlad Liton

Reputation: 9351

You should have done it yourself. it needs to know very basic of loop.
try like this:

for($i=0;$i <= 3; $i++){ //outer loop for 12 times
     echo "<row>"; // start row
     for ($j=0;$j<3;$j++){ // inner loops for echoing 3 times
      echo "<item>"; //echo item
     }
     echo "</row>"; // end row
    }

demo : https://eval.in/107129

I have used "\n" for new line in demo. if you needed new line then you can use <br />

Upvotes: 0

Phylogenesis
Phylogenesis

Reputation: 7880

You need to use two loops:

// Outer loop for each row
for ($row = 0; $row < 4; $row++) {
    echo '<row>';

    // Inner loop for the items
    for ($item = 0; $item < 3; $item++) {
        echo '<item>';
    }

    echo '</row>';
}

Upvotes: 0

Related Questions