我有一个循环,循环就像每行有4个项目,我想将类添加到最后一行的元素,所以我需要这样的东西:
switch( $count ){
case 8:
$items = [5, 6, 7, 8];
break;
case 7:
$items = [5, 6, 7];
break;
case 6:
$items = [5, 6];
break;
case 5:
$items = [5];
break;
case 9:
$items = [9];
break;
case 10:
$items = [9, 10];
break;
case 11:
$items = [9, 10, 11];
break;
case 12:
$items = [9, 10, 11, 12];
break;
case 13:
$items = [13];
break;
// And so on...
default:
if( $count <= 4 ){
$items = range(1, $count);
}
break;
}
我认为使用switch
语句不是正确的方法,除了它只适用于少于14的$count
个数字,如果我想要一个接一个地写所有数字无论$count
值是什么,都可以使用它。
要进一步澄清:
我们有一组项目(html元素),每行有4个,我们想为最后一行的每个项目添加一个css类, 因此,如果项目总数为8,则第5,第6,第7和第8项位于最后一行。
参见这些例子
1 2 3 4
5 6 7 8 This is the last row, so $items equals [5, 6, 7, 8]
OR
1 2 3 4
5 6 This is also the last row so $items equals [5, 6]
OR
1 2 3 4
5 6 7 8
9 10 11 This is last row too so $items equals [9, 10, 11]
OR
1 2 3 4 We have only 4 items , so there is only one row so $items equals [1, 2, 3, 4]
答案 0 :(得分:4)
我不明白为什么1,2,3,4与其他人分开,但由于这是你想要的,这是你的解决方案:
if( $count <= 4 ){
$items = [1, 2, 3, 4];
} else {
$items = [] ;
for ( $i = $count - ($count-1) % 4 ; $i <= $count ; $i++) {
$items[] = $i ;
}
}
答案 1 :(得分:2)
我正在研究range()
的某些内容并且不得不对其进行切片:
$items = array_slice(range($count - 3, $count), -($count % 4));
然后我问,为什么我不能在range()
:
$items = range($count - ($count - 1) % 4, $count);