Ajmal Razeel Ajmal Razeel - 2 months ago 15
PHP Question

How to control foreach loop iteration in php

I want to fetch some data from database in the form of list. Following is my loop:

<div class="col-sm-4">
<ul>
<?php
foreach($subjects as $s)
{
echo "<li>$s->subject_title</li>";
}
?>
</u>
</div>


Now this loop prints data in one column and the user have to scroll down to view the last elements. I want to control the loop in such a way that after printing first 10 elements, it must start again from the div tag and print the next 10 elements and so on. I want to show the data in such a way that the user don't have to scroll down.

For example, I want to print the data in the following way:

enter image description here

I write the following code but it is not working. The div tag is only applied to the first 10 elements, and not on the rest of the data.

<div class="col-sm-6">
<ul class="filter-list">
<?php
$i = 0;
foreach($main_subjs as $i=>$ms)
{
if($i == 10) {
echo "</ul></div><div class='col-sm-6'><ul>";
$i++;
continue;
}
echo "<li><a href='#'>$ms->mains_title</a></li>";
}
?>
</ul>
</div>


Please Help.

Answer

As an arugment for a loop you can also use the key of array

foreach($subjects as $i=>$s)

When you will be able to "control" your loop, e.g.:

<div>
<?php
foreach($subjects as $i=>$s) {
  if($i> 0 && $i % 5 == 0) {
    echo "</div><div>";
  }
  echo "<li>$s->subject_title</li>";
}
?>
</div>