PHP中未知深度的多维数组到一维数组及相关键
我有一个递归函数,它可以输出如下所示的数据PHP中未知深度的多维数组到一维数组及相关键,php,arrays,recursion,Php,Arrays,Recursion,我有一个递归函数,它可以输出如下所示的数据 Array ( [17] => Array ( [cat_id] => 17 [cat_name] => test.example.1 [cat_parent] => 16 [cat_slug] => Test Example 1 ) [18] => Array ( [16] => Array
Array
(
[17] => Array
(
[cat_id] => 17
[cat_name] => test.example.1
[cat_parent] => 16
[cat_slug] => Test Example 1
)
[18] => Array
(
[16] => Array
(
[cat_id] => 16
[cat_name] => test.example.2
[cat_parent] => 15
[cat_slug] => Test Example 2
)
[17] => Array
(
[15] => Array
(
[cat_id] => 15
[cat_name] => test.example.3
[cat_parent] => 6
[cat_slug] => Test Example 3
)
[16] => Array
(
[6] => Array
(
[cat_id] => 6
[cat_name] => test.example.4
[cat_parent] => 2
[cat_slug] => Test Example 4
)
[7] => Array
(
[2] => Array
(
[cat_id] => 2
[cat_name] => test.example.5
[cat_parent] => 0
[cat_slug] => Test Example 5
)
)
)
)
)
)
我找不到在一维中创建此阵列的方法,因此我希望有人能够通过一些阵列播放帮助实现一维,保留相关的键
例如
Array
(
[17] => Array
(
[cat_id] => 17
[cat_name] => test.example.1
[cat_parent] => 16
[cat_slug] => Test Example 1
)
[16] => Array
(
[cat_id] => 16
[cat_name] => test.example.2
[cat_parent] => 15
[cat_slug] => Test Example 2
)
[15] => Array
(
[cat_id] => 15
[cat_name] => test.example.3
[cat_parent] => 6
[cat_slug] => Test Example 3
)
[6] => Array
(
[cat_id] => 6
[cat_name] => test.example.4
[cat_parent] => 2
[cat_slug] => Test Example 4
)
[2] => Array
(
[cat_id] => 2
[cat_name] => test.example.5
[cat_parent] => 0
[cat_slug] => Test Example 5
)
)
你循环,如果是数组(值)循环againIt有点棘手@Ibu,因为他正在寻找的项目也是数组,你有你提到的这个递归函数的代码吗?因为在我看来,这就是问题所在。@nl-x array\u walk不会递归。而array\u walk\u recursive会递归得太远,因为它会进入他树叶子上的数组。@Ozmah我将把递归函数作为一个单独的问题发布。巴尔马已经解决了这个问题。
else
应该是elseif
我猜。
function flatten($array, &$newArray) {
foreach($array as $i => $el) {
if (!is_array($array)) {
return;
}
if (isset($el['cat_id'])) {
$newArray[$i] = $el;
} elseif (is_array($el)) {
flatten($el, $newArray);
}
}
}
$result = array();
flatten($array, $result);