Reputation: 5598
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!
Upvotes: 0
Views: 158
Reputation: 26193
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.
Upvotes: 1
Reputation: 6381
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
Upvotes: 1
Reputation: 2948
Use the modulus operator http://www.php.net/manual/en/language.operators.arithmetic.php
if(($i % 4) === 0){
//add class
}
Upvotes: 2