我有一个部门的树形结构数组,我需要将其展平为CSV(显示每个最终部门的完整路径)
假设我有以下数组:
$arr = array("AA" => ["BB" => [], "CC" => ["DD" => [], "EE" => []]], "FF" => ["GG" =>[]]);
var_dump:
array(2) {
["AA"]=>
array(2) {
["BB"]=>
array(0) {
}
["CC"]=>
array(2) {
["DD"]=>
array(0) {
}
["EE"]=>
array(0) {
}
}
}
["FF"]=>
array(1) {
["GG"]=>
array(0) {
}
}
}
我需要将它们展平成这样的CSV结构
AA
AA | BB
AA | CC
AA | CC | DD
AA | CC | EE
FF
FF | GG
我尝试了递归函数,但是我总是以无法作为CSV的子数组结尾
答案 0 :(得分:3)
写递归函数应该很简单:
function rec($arr, $pre) {
foreach($arr as $k => $v) {
$t = array_merge($pre, [$k]);
echo implode (" | ", $t) . PHP_EOL;
rec($v, $t);
}
}
简单示例为:
$arr = array("AA" => ["BB" => [], "CC" => []], "DD" => []);
rec($arr, []);
输出:
AA
AA | BB
AA | CC
DD