zoukankan      html  css  js  c++  java
  • PHP把数组按指定的个数分隔

    PHP把数组按指定的个数分隔

    假设数组为array(‘1’,‘2’,‘3’,‘4’,‘5’,‘6’); 想把它分割成四个,那么结果为
    array(
    ‘0’ => [‘1’,‘2’],
    ‘1’ => [‘3’,‘4’],
    ‘2’ => [‘5’],
    ‘3’ => [‘6’],
    );
    https://blog.csdn.net/justflyhigh/article/details/7708145
    部分内容借鉴以上文章,实现的结果不一样,如果我的函数功能不是你想要的,可以去以上文章看一下。

    /**
     * 
     * 把数组按指定的个数分隔
     * @param array $array 要分割的数组
     * @param int $groupNum 分的组数
     */
    function splitArray($array, $groupNum){
        if(empty($array)) return array();
        //数组的总长度
        $allLength = count($array);
        //个数
        $groupNum = intval($groupNum);
        //取余
        $yu = (int)($allLength%$groupNum);
        //取整
        $zheng = (int)(($allLength-$yu)/$groupNum);
        //结果集
        $result = array();
        //算出小数组可以有几个元素
        $s = array();
        if($yu > 0){
            for ($i=0; $i <$groupNum; $i++) {            
                $s[$i] = $zheng;
                if($yu>=1){
                   $s[$i] = $s[$i]+1;
                }
                $yu = $yu-1;         
            }
        }else{       
            return array_chunk($array, $zheng);       
        }
        foreach ($s as $k => $v) {
          for ($i=0; $i < $v; $i++) { 
            $result[$k][] = array_shift($array); 
          }
        }
        return $result;
    }
  • 相关阅读:
    DTOJ #3328. 开箱子(unboxing)
    dtoi4649 光明
    dtoi4539「TJOI / HEOI2016」序列
    dtoi3031 交错和查询 (sum)
    dtoi4375「BJOI2019」删数
    dtoi4266 exchange
    dtoi4680 红黑兔
    dtoi1363 楼房重建 (rebuild)
    dtoi1927 [ONTAK2010]Peaks加强版
    dtoi4538 「TJOI / HEOI2016」排序
  • 原文地址:https://www.cnblogs.com/bluealine/p/11666636.html
Copyright © 2011-2022 走看看