加密解密 获取昨天、今天、明天 身份证中间数字变星号 日期补0 计算数据是否已过期逻辑 数组根据相同值再分组 判断是否为微信端打开 判断是否为移动端 随机数:字母 过滤符号、过滤词组 根据身份证号计算年龄、性别 根据指定个数,为数组分组 防止上传超时 linux使用include报failed to open stream: No such file or directory错误 常用数组操作 常用字符串操作 常用数学操作 将网络图片保存到本地

根据指定个数,为数组分组

首页 > PHP > 原生PHP 更新日期:2022-12-29 10:45:02
/**
 * 根据指定个数,为数组分组
 * $arr 原始数据
 * $num 分几组
 */
function ArrayGroup ($arr, $num) {
    // 原始数据
    # $arr = [1,4,5,2,10,"李某","你吃了吗?","斗破苍穹",111,123,1,5,6,111,123,111,123];
    $arr = $arr;
    // 分几组
    $count = count($arr)/$num;
    // 数组总个数
    $allLength = count($arr);
    // 每组的个数,这里可以根据需求,为个数设置四舍五入等。下面程序支持小数
    $groupNum = $count;
    //开始位置
    $start = 0;
    //可以分成几组
    $enum = (int)($allLength/$groupNum);
    //结果集
    $result = [];
    if($enum > 0){
        // 被分数组中,能整除,分成数组中元素个数的部分
        $firstLength = $enum * $groupNum;
        $firstArray = [];
        for($i=0; $i<$firstLength; $i++){
            array_push($firstArray, $arr[$i]);
            unset($arr[$i]);
        }
        
        for($i=0; $i<$groupNum; $i++){
            //从原数组中的指定开始位置和长度 截取元素放到新的数组中
            $result[] = array_slice($firstArray, $start, $enum);
            //开始位置加上累加元素的个数
            $start += $enum;
        }
        
        //数组剩余部分分别加到结果集的前几项中
        $secondLength = $allLength - $firstLength;
        for($i=0; $i<$secondLength; $i++){
            array_push($result[$i], $arr[$i + $firstLength]);
        }
    }else{
        for($i=0; $i<$allLength; $i++){ 
            $result[] = array_slice($arr, $i, 1); 
        } 
    }   
    return $result;
}

结果:

array:3 [
  0 => array:8 [
    0 => 1
    1 => 4
    2 => 5
    3 => 2
    4 => 10
    5 => "李某"
    6 => "你吃了吗?"
    7 => "斗破苍穹"
  ]
  1 => array:8 [
    0 => 111
    1 => 123
    2 => 1
    3 => 5
    4 => 6
    5 => 111
    6 => 123
    7 => 111
  ]
  2 => array:1 [
    0 => 123
  ]
]


标题导航