我无法弄清楚如何将数组递归地合并到一个单维数组中。这是一个例子:
$array = [
'one' => [
'two' => [
'three' => [],
],
],
];
$array2 = [
'four' => [
'five' => [
'six' => [
'seven' => [],
],
],
],
];
预期产出:
$array = [
'one',
'two',
'three',
'four',
'five',
'six',
'seven',
];
有没有人有任何建议能够完成预期的工作?提前谢谢!
答案 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