php数组处理

$arr = [
    ['num' => -1],
    ['num' => 1],
    ['num' => 2],
    ['num' => 3],
    ['num' => 8],
    ['num' => 9],
    ['num' => 10],
    ['num' => 11],
    ['num' => 20],
    ['num' => 21],
    ['num' => 22],
    ['num' => 25],
    ['num' => 30],
    ['num' => 31],
    ['num' => 32],
    ['num' => 100],
];

现在的要求是,如果数组中num值相减大于1的话,就给它分割成一个新的数组,处理成这样:

$arr = [
    [
        ['num' => -1],
    ],
    [
        ['num' => 1],
        ['num' => 2],
        ['num' => 3],
    ],
    [
        ['num' => 8],
        ['num' => 9],
        ['num' => 10],
        ['num' => 11],
    ],
    [
        ['num' => 20],
        ['num' => 21],
        ['num' => 22],
    ],
    [
        ['num' => 25]
    ],
    [
        ['num' => 30],
        ['num' => 31],
        ['num' => 32],
    ],
    [
        ['num' => 100],
    ]
];

想请教下,用PHP该怎么处理?

温温酱
浏览 395回答 1
1回答

慕桂英3389331

至少for循环还是能想到.. function continuous($arr, $field = "num") { $result = []; $temp = [ $arr[0], ]; for ($i = 1; $i < count($arr); $i++) { $prev = $arr[$i - 1][$field]; $now = $arr[$i][$field]; if ($now - $prev == 1) { $temp[] = $arr[$i]; } else { if ($temp) { $result[] = $temp; } $temp = [$arr[$i]]; } } if(!empty($temp)) { $result[] = $temp; } return $result; }
打开App,查看更多内容
随时随地看视频慕课网APP