I'm currently checking whether an entry in a loop is the third iteration or not, with the following code:
<?php for ($i = 0; $i < count($category_news); $i++) : ?>
    <div class="grid_8">
        <div class="candidate snippet <?php if ($i % 3 == 2) echo "end"; ?>">
            <div class="image shadow_50">
                <img src="<?php echo base_url();?>media/uploads/news/<?php echo  $category_news[$i]['url']; ?>" alt="Image Preview" width="70px" height="70px"/>
            </div>
               <h5><?php echo $category_news[$i]['title']?></h5>
            <p><?php echo strip_tags(word_limiter($category_news[$i]['article'], 15)); ?></p>
            <?php echo anchor('/news/article/id/'.$category_news[$i]['news_id'], '>>', array('class' => 'forward')); ?>
        </div>
    </div>
    <?php if ($i % 3 == 2) : ?>
         </li><li class="row">
    <?php endif; ?>
<?php endfor; ?>
How can I check if the loop is in its second and not its third iteration?
I have tried $i % 2 == 1 to no avail.
The fmod() function returns the remainder (modulo) of x/y.
The modulus operator returns the remainder of a division of one number by another. In most programming languages, modulo is indicated with a percent sign. For example, "4 mod 2" or "4%2" returns 0, because 2 divides into 4 perfectly, without a remainder.
The typical usage of mod is for generating values inside a fixed range. In this case, you want values that are between 0 and strlen("abc")-1 so that you don't access a position outside "abc" . The general concept you need to keep in mind is that x % N will always return a value between 0 and N-1 .
Often when you write code, you want the same block of code to run over and over again a certain number of times. So, instead of adding several almost equal code-lines in a script, we can use loops. Loops are used to execute the same block of code again and again, as long as a certain condition is true.
Modulus checks what's the leftover of a division.
If $i is 10, 10/2 = 5 with no leftover, so $i modulus 2 would be 0. 
If $i is 10, 10/3 = 3 with a leftover of 1, so $i modulus 3 would be 1.
To make it easier for you to track the number of item i would start $i from 1 instead of 0. e.g.
for($i=1; $i <= $count; $i++)
    if($i % 2 == 0) echo 'This number is even as it is divisible by 2 with no leftovers! Horray!';
                        When in doubt, write a snippet of code:
for ($j = 1; $j < 4; $j++)
{
   for ($k = 0; $k < $j; $k++)
   {
      echo "\n\$i % $j == $k: \n";
      for ($i = 0; $i < 10; $i++)
      {
         echo "$i : ";
         if ($i % $j == $k)
         {
            echo "TRUE";
         }
         echo " \n";
      }
   }
}
Here is the output. Use it to figure out what you need to use:
$i % 1 == 0: 
0 : TRUE 
1 : TRUE 
2 : TRUE 
3 : TRUE 
4 : TRUE 
5 : TRUE 
6 : TRUE 
7 : TRUE 
8 : TRUE 
9 : TRUE 
$i % 2 == 0: 
0 : TRUE 
1 :  
2 : TRUE 
3 :  
4 : TRUE 
5 :  
6 : TRUE 
7 :  
8 : TRUE 
9 :  
$i % 2 == 1: 
0 :  
1 : TRUE 
2 :  
3 : TRUE 
4 :  
5 : TRUE 
6 :  
7 : TRUE 
8 :  
9 : TRUE 
$i % 3 == 0: 
0 : TRUE 
1 :  
2 :  
3 : TRUE 
4 :  
5 :  
6 : TRUE 
7 :  
8 :  
9 : TRUE 
$i % 3 == 1: 
0 :  
1 : TRUE 
2 :  
3 :  
4 : TRUE 
5 :  
6 :  
7 : TRUE 
8 :  
9 :  
$i % 3 == 2: 
0 :  
1 :  
2 : TRUE 
3 :  
4 :  
5 : TRUE 
6 :  
7 :  
8 : TRUE 
9 :  
                        If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With