将变量匹配到循环中的每个第4个数字 - PHP

I am needing to add a different class at the end of every 4th item that I am looping through. I have done so by:

$i=0;
foreach($mount as $m){
    $i++;
    $startClass = '';
    if($i==4||$i==8||$i==12){$startClass='<div with class>';} //adds class on 4th intervals
    $ret.=''.$startClass.'<other HTML here and such>'; //shorted for readability
}

Now I'm sure there is a more appropriate way to handle this given the fact that if my loop contains 40 objects, I'll need to adjust the if statement accordingly.

I'm recalling an arithmetic formula that might work [an = a1+(n-1)d] but I'm finding that my idea seems off. I apply it (replacing an with i) and it will always = to the equation, thus each item gets the class.

Any suggestions? Thanks in advance!

Use the modulus operator http://www.php.net/manual/en/language.operators.arithmetic.php

if(($i % 4) === 0){
  //add class
}

A combination of the foreach control structure and the % modulus operator will give you what you need:

foreach ($mount as $key => $m) {
    if ($key % 4 == 0) {
        $startClass = '<div with class>';
    } else {
        $startClass = '';
    }
    $ret.=''.$startClass.'<other HTML here and such>';
}

The foreach hash-rocket (=>) notation enables you to pass the index of the current element being iterated through. You can use the index to keep track of the nth-object.

The modulus operator returns the remainder from division; if the remainder is zero, the divisor is a factor of the dividend and thus can be used to calculate nth-factors.

what you are looking for is modulo operator

example:

if($i%4 == 0){$startClass='<div with class>';}

which means that i = k + 0, k being integer

$i=0;

foreach($mount as $m)
{
    if (($i++ % 4) == 0)
    {

    }
}