我用这段代码在奇数/偶数元素的类之间切换:
<li class="<?php echo ($key%2) ? "odd" : "even";>
我如何获得每三个项目,添加前类"一"、"二"、"三"?
有很多方法。这里有一个"oneliner":
<li class="<?php $t=$key%3; echo ($t==0?"one":$t==1?"two":"three");>
如果你得到了3个以上的项目,你可能会得到一个更易于管理的切换语句代码:
<?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 switch($key%3): case 0: echo "one"; break; case 1: echo "two"; break; case 2: echo "three"; break; ?>
要清理HTML文件,可以将这个switch语句放入一个函数中。
如果循环中有计数器,只需使用模并检查它是否为0。然后您可以添加特定的类。
if ($i % 3 == 0) { }
$classes = ['one', 'two', 'three'];
for (..) {
printf('<li class="%s">', $classes[$key % count($classes)]);
}
<?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/>';
}
弹性解决方案,你可以有3,4,5…类只需修改$classes数组。也很快,不需要划分大的数字,只需迭代小数组和按正确顺序列出的类即可。
如果你想要干净的HTML,定义一个如下的函数,
它会将default
类应用于每个元素,将even
类应用于每一个第二个元素,并将third
类应用于第三个元素,您可以随意扩展它,
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);
}
像一样使用它
<li class="<?php echo apply_class($i)?>" > </li>
将呈现类似HTML的
$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>