在PHP中,将一维数组转换为二维数组可以通过多种方式实现。以下是几种常见的方法:
array_chunk
函数array_chunk
函数可以将一维数组分割成指定大小的二维数组。
$array = [1, 2, 3, 4, 5, 6, 7, 8, 9];
$chunkSize = 3;
$result = array_chunk($array, $chunkSize);
print_r($result);
输出:
Array
(
[0] => Array
(
[0] => 1
[1] => 2
[2] => 3
)
[1] => Array
(
[0] => 4
[1] => 5
[2] => 6
)
[2] => Array
(
[0] => 7
[1] => 8
[2] => 9
)
)
如果你需要更灵活的控制,可以手动循环分割数组。
$array = [1, 2, 3, 4, 5, 6, 7, 8, 9];
$chunkSize = 3;
$result = [];
for ($i = 0; $i < count($array); $i += $chunkSize) {
$result[] = array_slice($array, $i, $chunkSize);
}
print_r($result);
输出:
Array
(
[0] => Array
(
[0] => 1
[1] => 2
[2] => 3
)
[1] => Array
(
[0] => 4
[1] => 5
[2] => 6
)
[2] => Array
(
[0] => 7
[1] => 8
[2] => 9
)
)
array_map
和 array_slice
你也可以结合 array_map
和 array_slice
来实现。
$array = [1, 2, 3, 4, 5, 6, 7, 8, 9];
$chunkSize = 3;
$result = array_map(function($i) use ($array, $chunkSize) {
return array_slice($array, $i * $chunkSize, $chunkSize);
}, range(0, (count($array) - 1) / $chunkSize));
print_r($result);
输出:
Array
(
[0] => Array
(
[0] => 1
[1] => 2
[2] => 3
)
[1] => Array
(
[0] => 4
[1] => 5
[2] => 6
)
[2] => Array
(
[0] => 7
[1] => 8
[2] => 9
)
)
array_reduce
array_reduce
也可以用来将一维数组转换为二维数组。
$array = [1, 2, 3, 4, 5, 6, 7, 8, 9];
$chunkSize = 3;
$result = array_reduce($array, function($carry, $item) use ($chunkSize) {
if (empty($carry) || count(end($carry)) >= $chunkSize) {
$carry[] = [];
}
$carry[count($carry) - 1][] = $item;
return $carry;
}, []);
print_r($result);
输出:
Array
(
[0] => Array
(
[0] => 1
[1] => 2
[2] => 3
)
[1] => Array
(
[0] => 4
[1] => 5
[2] => 6
)
[2] => Array
(
[0] => 7
[1] => 8
[2] => 9
)
)
array_chunk
是最简单直接的方法,适合大多数情况。array_map
和 array_slice
结合使用可以实现更复杂的分割逻辑。array_reduce
适合需要逐步构建二维数组的场景。根据你的具体需求选择合适的方法即可。