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

php二维转一维数组

oneDimensionalAr array twoDimensionalAr ray 623    来源:    2025-03-19

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

方法1:使用 array_merge... 操作符

$twoDimensionalArray = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
];

$oneDimensionalArray = array_merge(...$twoDimensionalArray);

print_r($oneDimensionalArray);

输出:

Array
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
    [4] => 5
    [5] => 6
    [6] => 7
    [7] => 8
    [8] => 9
)

方法2:使用 array_reduce

$twoDimensionalArray = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
];

$oneDimensionalArray = array_reduce($twoDimensionalArray, 'array_merge', []);

print_r($oneDimensionalArray);

输出:

Array
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
    [4] => 5
    [5] => 6
    [6] => 7
    [7] => 8
    [8] => 9
)

方法3:使用 foreach 循环

$twoDimensionalArray = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
];

$oneDimensionalArray = [];
foreach ($twoDimensionalArray as $subArray) {
    $oneDimensionalArray = array_merge($oneDimensionalArray, $subArray);
}

print_r($oneDimensionalArray);

输出:

Array
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
    [4] => 5
    [5] => 6
    [6] => 7
    [7] => 8
    [8] => 9
)

方法4:使用 array_walk_recursive

$twoDimensionalArray = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
];

$oneDimensionalArray = [];
array_walk_recursive($twoDimensionalArray, function($item) use (&$oneDimensionalArray) {
    $oneDimensionalArray[] = $item;
});

print_r($oneDimensionalArray);

输出:

Array
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
    [4] => 5
    [5] => 6
    [6] => 7
    [7] => 8
    [8] => 9
)

方法5:使用 array_column(适用于关联数组)

如果你的二维数组是关联数组,可以使用 array_column 来提取某一列的值:

$twoDimensionalArray = [
    ['id' => 1, 'name' => 'Alice'],
    ['id' => 2, 'name' => 'Bob'],
    ['id' => 3, 'name' => 'Charlie']
];

$oneDimensionalArray = array_column($twoDimensionalArray, 'name');

print_r($oneDimensionalArray);

输出:

Array
(
    [0] => Alice
    [1] => Bob
    [2] => Charlie
)

总结

  • array_merge... 操作符 是最简洁的方式,适用于简单的二维数组。
  • array_reduce 是一个函数式编程的方式,适合处理更复杂的数组结构。
  • foreach 循环 是最基础的方式,适合初学者理解。
  • array_walk_recursive 适用于多维数组的递归处理。
  • array_column 适用于提取关联数组中的某一列。

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