2013-07-15 134 views
1
<?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
$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

不知道这是否是最好的做法,但这是我该怎么做的。

<?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给予所有阵列组块相同的长度。