Php 将数组递归合并为一维数组

Php 将数组递归合并为一维数组,php,recursion,Php,Recursion,我不知道如何将数组递归地合并到一个一维数组中。下面是一个例子: $array = [ 'one' => [ 'two' => [ 'three' => [], ], ], ]; $array2 = [ 'four' => [ 'five' => [ 'six'

我不知道如何将数组递归地合并到一个一维数组中。下面是一个例子:

    $array = [
        'one' => [
            'two' => [
                'three' => [],
            ],
        ],
    ];

    $array2 = [
        'four' => [
            'five' => [
                'six' => [
                    'seven' => [],
                ],
            ],
        ],
    ];
预期产出:

$array = [
     'one',
     'two',
     'three',
     'four',
     'five',
     'six',
     'seven',
];
有没有人对实现预期目标有什么建议?提前谢谢

正如您所料,已经有了一个新的解决方案。您只需稍微调整它以适应您的几个阵列:

// To flatten an array using keys as values.
function array_keys_multi(array $array) {
    $keys = array();
    foreach ($array as $key => $value) {
        $keys[] = $key;
        if (is_array($value)) {
            $keys = array_merge($keys, array_keys_multi($value));
        }
    }
    return $keys;
}

// To merge the flattened arrays.
function array_merge_multi() {
    $result = array();
    foreach (func_get_args() as $array) {
        $result = array_merge($result, array_keys_multi($array));
    }
    return $result;
}

$result = array_merge_multi($array, $array2);
您可以在
array\u merge\u multi()
中使用任意数量的参数,就像在
array\u merge()
中一样

在这里测试:

正如您可能预期的那样,已经有了。您只需稍微调整它以适应您的几个阵列:

// To flatten an array using keys as values.
function array_keys_multi(array $array) {
    $keys = array();
    foreach ($array as $key => $value) {
        $keys[] = $key;
        if (is_array($value)) {
            $keys = array_merge($keys, array_keys_multi($value));
        }
    }
    return $keys;
}

// To merge the flattened arrays.
function array_merge_multi() {
    $result = array();
    foreach (func_get_args() as $array) {
        $result = array_merge($result, array_keys_multi($array));
    }
    return $result;
}

$result = array_merge_multi($array, $array2);
您可以在
array\u merge\u multi()
中使用任意数量的参数,就像在
array\u merge()
中一样


此处测试:

数组\u walk\u recursive()
并将所有键抓取到一个数组中您是否能够显示一个示例?我不太确定如何使用
array\u walk\u recursive()
检索预期的输出……当您使用匿名函数时,可以通过关键字传递一个结果数组,并通过遍历每个键来填充它。使用
array\u walk\u recursive())
不起作用:
任何保存数组的键都不会被传递给函数。
因此它基本上会将我的数组读取为empty@SteveBauman,
array\u walk\u recursive()?我不太确定如何使用
array\u walk\u recursive()
检索预期的输出……当您使用匿名函数时,可以通过关键字传递一个结果数组,并通过遍历每个键来填充它。使用
array\u walk\u recursive())
不起作用:
任何保存数组的键都不会被传递给函数。
因此它基本上会将我的数组读取为empty@SteveBauman,