I have used this code to toggle between classes for odd/even elements:
<li class="<?php echo ($key%2) ? "odd" : "even";>
How can I get every 3rd item, to add ex. classes 'one', 'two, 'three'?
There are many ways. Here is a "oneliner":
<li class="<?php $t=$key%3; echo ($t==0?"one":$t==1?"two":"three");>
If you get more than 3 items you might get more manageable code with a switch statement:
<?php
switch($key%4){
case(0): echo "one"; break;
case(1): echo "two"; break;
case(2): echo "three"; break;
case(3): echo "four"; break;
}
?>
<?php
$classes = array('first','second','third');
for ($i = 1; $i < 100; $i++) {
echo $i.' class: ' .current($classes);
if(!next($classes))
{
// reset if there is end of array
reset($classes);
}
echo '<br/>';
}
elastic solution, You can have 3,4,5... classes by modifing $classes array only. Also is fast, don`t need to divide large numbers, just iterate small array with class listed in correct odrder
If you want clean HTML, define a function like below,
It will apply default class to every element, even class to every second element and third class to every third element, you can extend it as you like,
function apply_class($i)
{
$every = 'default';
$every_second = 'even';
$every_third = 'third';
$return [] = 'default';
if ( $i%2 == 0 ) { $return [] = $every_second; }
if ( $i%3 == 0 ) { $return [] = $every_third; }
return implode(' ', $return);
}
Use it like,
<li class="<?php echo apply_class($i)?>" > </li>
Will render HTML like,
$i
1 <li class="default"> </li>
2 <li class="default even"> </li>
3 <li class="default third"> </li>
4 <li class="default even"> </li>
5 <li class="default"> </li>
6 <li class="default even third"> </li>
7 <li class="default"> </li>
8 <li class="default even"> </li>
9 <li class="default third"> </li>
10 <li class="default even"> </li>
$classand then later do<li class="$class">