Php 获取循环中最后n组数字

Php 获取循环中最后n组数字,php,loops,Php,Loops,我有一个循环,循环好像每行有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:

我有一个循环,循环好像每行有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;
}

我不明白为什么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 ;
    }
}

如果($count我不明白为什么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 ;
    }
}

如果($count我正在使用
range()
进行某项工作,并且必须对其进行切片:

$items = array_slice(range($count - 3, $count), -($count % 4));
然后我问,为什么我不能在
范围()中执行此操作:


我当时正在用
range()
处理一些东西,必须对其进行切片:

$items = array_slice(range($count - 3, $count), -($count % 4));
然后我问,为什么我不能在
范围()中执行此操作:



为了清晰起见,我觉得这需要一些上下文……你到底想做什么?你希望输出是什么样子的?我不知道你想要什么。@DevDonkey我想在最后一行中找到元素的索引号,每行包含4项,所以如果总数是8,那么最后一行的索引号将是[5,6,7,8]我编辑了这个问题,所以为什么不生成
4,5,6,7
??我觉得这可能需要一些上下文来澄清…你到底想做什么?你希望输出是什么样子。我不知道你想要什么。@DevDonkey我想在最后一行找到元素的索引号,每行包含4个元素ems,所以如果总数是8,那么最后一行索引号将是[5,6,7,8]我编辑了这个问题,为什么
7
不生成
4,5,6,7
??当元素少于5个时,我们只有一行,所以第一行也是最后一行。这是你解释的完全合乎逻辑的情况之一,显然,对你来说是这样,但对我们来说(至少对我来说),它不知怎的没有着陆。我们不明白。不管怎样,代码的结果与您的代码中的结果相同,所以我想这并不重要。;)是的,很抱歉我不能很好地解释它,但是你的代码正是我需要的,你甚至不需要第一个
if
语句,它适用于所有数字。我将把它放在那里,因为这是它产生与你的代码完全相同的结果的方式;在你自己的代码中,当然你可以做你喜欢做的任何事情;)。干杯@那更好,因为2,3,4根本不存在。我写错了代码,当元素少于5个时,我们只有一行,所以第一行也是最后一行。这是你解释的完全合乎逻辑的情况之一,很明显,对你来说是这样,但对我们(至少对我来说),它不知怎的没有着陆。我们不明白。无论如何,代码的结果与代码中的结果相同,所以我想这没关系是的,很抱歉我不能很好地解释它,但是你的代码正是我需要的,你甚至不需要第一个
if
语句,它对所有数字都有效,我将把它放在那里,因为这是它产生与你的代码完全相同的结果的方式;当然,在您自己的代码中,您可以随心所欲;)。干杯@那更好,因为2,3,4根本不存在。我把代码写错了简短而漂亮的答案,我认为
数组_切片(范围($count-3,$count),-($count%4))
会一直这样做,这与你的问题不同,但还行。不是,如果我在问题中添加一些示例,如果你看到它们,你的代码会给出我想要的结果,在这种情况下,我添加了一个简单的示例。简短而漂亮的答案,我认为
array\u切片(范围($count-3,$count),-($count%4))
可以单独完成这项工作,这与您的问题不同,但还行。如果我在问题中添加了一些示例,如果您看到它们,您的代码会给出我想要的结果,在这种情况下,我添加了一个更简单的示例。