为了账号安全,请及时绑定邮箱和手机立即绑定

php数组处理

php数组处理

PHP
温温酱 2019-03-12 20:26:11
$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该怎么处理?
查看完整描述

1 回答

?
慕桂英3389331

TA贡献2036条经验 获得超8个赞

至少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;
}
查看完整回答
反对 回复 2019-03-18
  • 1 回答
  • 0 关注
  • 393 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信