将数组递归地合并到单维数组中

时间:2016-02-20 20:48:51

标签: php recursion

我无法弄清楚如何将数组递归地合并到一个单维数组中。这是一个例子:

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

    $array2 = [
        'four' => [
            'five' => [
                'six' => [
                    'seven' => [],
                ],
            ],
        ],
    ];

预期产出:

$array = [
     'one',
     'two',
     'three',
     'four',
     'five',
     'six',
     'seven',
];

有没有人有任何建议能够完成预期的工作?提前谢谢!

1 个答案:

答案 0 :(得分:0)

已经有solution,正如您所料。你只需要为你的几个数组稍微调整一下:

// 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_merge_multi()中使用任意数量的参数,就像在array_merge()中一样。

在这里测试:https://eval.in/522491