我的数组形式的数据为:
0 => a,
1 => b,
2 => c,
3 => d,
4 => e,
5 => f,
6 => g
如何将这些数组转换为以下数组?
0 => array(0 => a, 1 => b),
1 => array(0 => c, 1 => d),
2 => array(0 => e, 1 => f),
3 => array(0 => g, 1 => null)
用户 array_chunk() 函数将数组分割成块,以及 2nd 参数块大小
array_chunk($arr, 2);
Chunk 将不会按照要求给出
null
。
$by = 2;
$arr = range('a', 'g');
$arr = array_merge($arr, count($arr) % $by ?
array_fill(0, $by - count($arr) % $by, null) : array());
var_dump(array_chunk($arr, $by));
考虑这段代码:
$j = 0;
for($i=0; $i< count($arr); $i++){
if(($i !=0) && (($i % 2) == 0)){
$j++;
}
$newArray[$j][] = $arr[$i];
}
$lastElement = count($newArray) -1;
if(count($newArray[$lastElement]) < 2){
$newArray[$lastElement][]= null;
}
echo "<pre>";
print_r($newArray);
输出:
Array
(
[0] => Array
(
[0] => a
[1] => b
)
[1] => Array
(
[0] => c
[1] => d
)
[2] => Array
(
[0] => e
[1] => f
)
[3] => Array
(
[0] => g
[1] =>
)
)
迭代并将每个块填充到 N 个元素。 演示
$n = 2;
var_export(
array_map(fn($chunk) => array_pad($chunk, $n, null), array_chunk($array, $n))
);
将输入数组填充为可被 N 整除,然后分块。 演示
$n = 2;
var_export(
array_chunk(array_pad($array, $n * ceil(count($array) / $n), null), $n)
);
无条件地将空填充数组与分块数组的最后一个条目合并。 演示
$n = 2;
$result = array_chunk($array, $n);
$result[intdiv(count($array), $n)] += array_fill(0, $n, null);
var_export($result);