我的网站上有一个方框列表:
box1 box2 box3
box4 box5 box6
box7 box8 box9
是否有人建议如何标记列表中间的每个方框(box2,box5,box8)?
感谢您的帮助!
这是我的foreach循环:
<?php foreach($usersResult as $user) { ?>
<div class="box">
// other stuff here
</div>
<?php } ?>
答案 0 :(得分:2)
<?php $i=-1; foreach($usersResult as $user) { ?>
<div class="box<?php echo ($i % 3 == 0 ? ' middle' : '') ?>">
// other stuff here
</div>
<?php $i++; } ?>
解释:%
(模数运算符)将返回除法的余数。因此,如果您执行$i % 3
,0
只要$i
可以3
(无余数),就可以$i
。我在你的循环中添加了-1
,我从condition ? value_if_true : value_if_false
开始,因为我们不需要每个第三个元素,而是从第二个元素开始的每个第三个元素(在基于0的世界中,第一个)
我还使用了三元运算符({{1}})。
答案 1 :(得分:1)
你应该使用%和for循环,类似这样(未经测试):
for( $i = 0; $i < 10; $i++ ) {
if( (($i+1)%3) == 0 ) echo 'class="colored"';
}
答案 2 :(得分:1)
像这样:
$i = 0;
foreach($boxes as $box){
if((($i+2) % 3) === 1){
//box2, box5, box8
}
else{
//other boxes
}
$i++;
}
答案 3 :(得分:0)
如果使用数组,即使是更长的但是很长 - 非Gofl示例。
$boxes = array(1,2,3,4,5,6,7,8,9);
foreach($boxes as $key => $box){
echo (($key+2)%3==0) ? "<b>" : "";
echo "(".$key . ' -> ' . $box . ") ";
echo (($key+1)%3==0) ? "<br/>" : "";
echo (($key+2)%3==0) ? "</b>" : "";
}
输出:
(0 - > 1)(1 - > 2)(2 - > 3)
(3 - > 4)(4 - > 5)(5 - > 6)
(6 - > 7)(7 - > 8)(8 - > 9)