zoukankan      html  css  js  c++  java
  • 【php】php实现数组分块

    有时候需要将一个大数组按一定大小分块,那么可以实现这个功能,代码如下:

    /**
     * @param array $arr
     * @param int $size <p>
     * @param bool $preserve_keys [optional] <p>
     * @author  <1123258953@qq.com>
     */
    function _array_chunk($arr,$size,$preserve_keys=true){
        if(empty($arr)){
           return $arr;
        }
        $count = count($arr) % $size == 0 ? count($arr) / $size : ceil(count($arr) / $size);
    
        for ($i = 0; $i < $count; $i++) {array_chunk();
            //$index = $i * $size;
            if(!isset($chunks_arr[$i])){
                $chunks_arr[$i] = [];
            }
            $j=0;
            foreach ($arr as $k=>$v){
                if($j<$size){
                    if($preserve_keys){
                        $chunks_arr[$i][$k] = $v;
                    }else{
                        $chunks_arr[$i][] = $v;
                    }
                    unset($arr[$k]);
                }
                $j++;
            }
        }
        return $chunks_arr;
    }
    

     测试

    $arr = range(1, 15);
    print_r(_array_chunk($arr,6,1));

     输出

    Array
    (
        [0] => Array
            (
                [0] => 1
                [1] => 2
                [2] => 3
                [3] => 4
                [4] => 5
                [5] => 6
            )
    
        [1] => Array
            (
                [6] => 7
                [7] => 8
                [8] => 9
                [9] => 10
                [10] => 11
                [11] => 12
            )
    
        [2] => Array
            (
                [12] => 13
                [13] => 14
                [14] => 15
            )
    
    )
    

     其实php有内置的数组可以实现该功能 就是 array_chunk    地址:http://php.net/manual/zh/function.array-chunk.php

    手册也有该函数的实现,可以参考下

    if (!function_exists('array_chunk')) { 
        function array_chunk( $input, $size, $preserve_keys = false) { 
            @reset( $input ); 
             
            $i = $j = 0; 
    
            while( @list( $key, $value ) = @each( $input ) ) { 
                if( !( isset( $chunks[$i] ) ) ) { 
                   $chunks[$i] = array(); 
                } 
    
                if( count( $chunks[$i] ) < $size ) { 
                    if( $preserve_keys ) { 
                        $chunks[$i][$key] = $value; 
                        $j++; 
                    } else { 
                        $chunks[$i][] = $value; 
                    } 
                } else { 
                    $i++; 
    
                    if( $preserve_keys ) { 
                        $chunks[$i][$key] = $value; 
                        $j++; 
                    } else { 
                        $j = 0; 
                        $chunks[$i][$j] = $value; 
                    } 
                } 
            } 
    
            return $chunks; 
        } 
    } 
    
  • 相关阅读:
    00 vue源码里面常见方法
    vue 组件
    vue 样式
    vue 表单
    网络技术:NAT 网络地址转换
    网络技术:ACL 访问控制列表
    网络技术:VLAN 虚拟局域网
    Java程序设计——购物车系统
    网络 2011-2012 C 语言第三次作业批改总结
    第一用CSS
  • 原文地址:https://www.cnblogs.com/songgj/p/8435666.html
Copyright © 2011-2022 走看看