使用连续键对数组进行分组

kap*_*els 0 php

我有一个像这样的数组 -

 Array
(
    [16] => 424
    [17] => 404
    [18] => 416
    [21] => 404
    [22] => 456
    [23] => 879
    [28] => 456
    [29] => 456
    [32] => 123
    [35] => 465
)
Run Code Online (Sandbox Code Playgroud)

这个数组的输出是

Array
(
    [0] => Array
           (   ['start'] => 16
               ['stop'] => 19
           )
    [1] => Array
           (   ['start'] => 21
               ['stop'] => 24
           )
    [2] => Array
           (
               ['start'] => 28
               ['stop'] => 30
           )
    [3] => Array
           (
               ['start'] => 32
               ['stop'] => 33
           )
    [4] => Array
           (
               ['start'] => 35
               ['stop'] => 36
           )
)
Run Code Online (Sandbox Code Playgroud)

我真的不需要这些价值观.只需将密钥分组.

'start'值应该是'start'值本身.然而,'stop'值应该是一个连续的整数.

如果特定键不存在连续整数(如[32]和[35]),则'stop'应为整数+ 1(与上述相同).

谢谢大家的帮助.

jon*_*tar 5

reset($arr);
$lastKey = key($arr);
$ansIndex = -1;
$ans = array();

foreach ($arr as $k=>$v)
{
    if ($k != $lastKey + 1)
    {
         $ansIndex++;
         $ans[$ansIndex]['start'] = $k; 
    }

    $ans[$ansIndex]['stop']  = $k+1;
    $lastKey = $k;
}
Run Code Online (Sandbox Code Playgroud)

编辑-改变$ K至$ K + 1的stop指数,以反映你的问题改变
编辑-发现我有两个内的代码行ifelse.将它从条件中取出,因为它无论如何运行.