具有固定间隔大小的数组

时间:2013-07-15 23:01:10

标签: php arrays

<?php
$input_array = array('a', 'b', 'c', 'd', 'e');
print_r(array_chunk($input_array, 2));
?>

php手册中的这个例子将输出:

Array
(
    [0] => Array
        (
            [0] => a
            [1] => b
        )

    [1] => Array
        (
            [0] => c
            [1] => d
        )

    [2] => Array
        (
            [0] => e
        )

)

但我需要一个固定大小的间隔。所以最后一个值应该是:

 [2] => Array
        (
            [0] => e
            [1] => null
        )

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

$size = 3;
$input_array = array('a', 'b', 'c', 'd', 'e');

$result = array_chunk(
    array_merge(
        $input_array, 
        ((count($input_array) % $size) == 0) 
            ? array()
            : array_fill(
                  0,
                  $size - (count($input_array) % $size), 
                  NULL
              )
    ), 
    $size
);

var_dump($result);

答案 1 :(得分:1)

不知道这是不是最好的做法,但我会这样做。

<?php
function arr_chunk($input_array, $chunk_size, $fixed=null) {
    if (is_null($fixed)) {
        $fixed = $chunk_size;
    }
    $chunked = array_chunk($input_array, $chunk_size);
    for ($i = 0; $i < count($chunked); $i++) {
        while (count($chunked[$i]) < $fixed) {
            $chunked[$i][] = null;
        }
    }
    return $chunked;
}

$input_array = array('a', 'b', 'c', 'd', 'e');
print_r(arr_chunk($input_array, 2));
?>

arr_array$fixed作为附加参数,或设置为$chunk_size,使所有数组块的长度相同。