<?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
)
有什么想法吗?
答案 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
,使所有数组块的长度相同。