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,