JoeHandsome 2020-07-10 11:30:44 5270次浏览 3条评论 0 0 0

封装的方法如下:

     /**
     * 用求余数的方法进行切割二维数组
     * @param array $arr  二维数组 [['12020202002'],['12121212210250250']]
     * @param int $num 每个数组切割的数量
     * @return array
     */
    public static function arr_slice($arr=[],$num=5){
        $temp = [];
        $last = [];
        $count = 0;
        foreach ($arr as $k=>$v){
            $count++;
            if ($count%($num+1) != 0){
                array_push($temp,$v[0]);
            }else{
                array_push($last,$temp);
                $temp = [];
                array_push($temp,$v[0]);
            }
            if ($count == count($arr)){
                array_push($last,$temp);
            }
        }
        return $last;
    }

调用结果:

    public function actionTest(){
        $arr = [
            ['10200102022010'],
            ['10200102022011'],
            ['10200102022012'],
            ['10200102022013'],
            ['10200102022014'],
            ['10200102022015'],
            ['10200102022016'],
            ['10200102022017'],
            ['10200102022018'],
            ['10200102022019'],
            ['10200102022020'],
            ['10200102022021'],
            ['10200102022022'],
            ['10200102022023']
        ];

        $last = self::arr_slice($arr,5);
        var_dump($last);die;
    }

如图:

微信截图_20200710113804.png

  • 评论于 2020-09-12 11:00 举报

    有现成函数不用为啥要自己写。。

    1 条回复
    评论于 2020-09-15 19:08 回复

    根据需求来做的

  • 评论于 2021-06-15 21:08 举报

    请问,这样做是要用在什么场景下呢?
    另一个问题:原始的二维数组是不是从小到大排列呢?看你运行的结果集,似乎还有更为便捷的方式?

  • 评论于 2021-07-07 18:30 举报

    array_chunk()不行嘛

您需要登录后才可以评论。登录 | 立即注册