插件窝 干货文章 php一维数组转二维

php一维数组转二维

array chunkSize 数组 二维 244    来源:    2025-03-19

在PHP中,将一维数组转换为二维数组可以通过多种方式实现。以下是几种常见的方法:

方法1:使用 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
        )
)

方法2:手动循环分割

如果你需要更灵活的控制,可以手动循环分割数组。

$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
        )
)

方法3:使用 array_maparray_slice

你也可以结合 array_maparray_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
        )
)

方法4:使用 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_maparray_slice 结合使用可以实现更复杂的分割逻辑。
  • array_reduce 适合需要逐步构建二维数组的场景。

根据你的具体需求选择合适的方法即可。