插件窝 干货文章 php怎么将多维数组转单维数组

php怎么将多维数组转单维数组

数组 多维 一维 函数 513    来源:    2025-03-18

在 PHP 中,你可以使用递归函数将多维数组转换为一维数组。以下是一个示例代码,展示了如何实现这一功能:

function flattenArray($array) {
    $result = [];
    array_walk_recursive($array, function($value) use (&$result) {
        $result[] = $value;
    });
    return $result;
}

// 示例多维数组
$multiDimensionalArray = [
    'a' => 1,
    'b' => [
        'c' => 2,
        'd' => [
            'e' => 3,
            'f' => 4
        ]
    ],
    'g' => 5
];

// 转换为一维数组
$flattenedArray = flattenArray($multiDimensionalArray);

print_r($flattenedArray);

代码解释:

  1. flattenArray 函数:这个函数接受一个多维数组作为参数,并返回一个一维数组。
  2. array_walk_recursive 函数:这个函数会递归地遍历数组中的每个元素,并将每个元素的值传递给回调函数。
  3. 回调函数:回调函数将每个值添加到 $result 数组中。
  4. &$result:通过引用传递 $result 数组,以便在回调函数中修改它。

输出结果:

Array
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
    [4] => 5
)

注意事项:

  • 这个方法适用于任意深度的多维数组。
  • 如果你需要保留键名,可以在回调函数中将键名和值一起添加到结果数组中。

如果你需要保留键名,可以使用以下代码:

function flattenArrayWithKeys($array) {
    $result = [];
    array_walk_recursive($array, function($value, $key) use (&$result) {
        $result[$key] = $value;
    });
    return $result;
}

// 示例多维数组
$multiDimensionalArray = [
    'a' => 1,
    'b' => [
        'c' => 2,
        'd' => [
            'e' => 3,
            'f' => 4
        ]
    ],
    'g' => 5
];

// 转换为一维数组并保留键名
$flattenedArray = flattenArrayWithKeys($multiDimensionalArray);

print_r($flattenedArray);

输出结果:

Array
(
    [a] => 1
    [c] => 2
    [e] => 3
    [f] => 4
    [g] => 5
)

这个版本会保留键名,但如果有重复的键名,后面的值会覆盖前面的值。