PHP-将树数组展平为层次CSV
我有一个树状结构的部门阵列,我需要将其展平为CSV(显示每个最终部门的完整路径) 假设我有以下数组:PHP-将树数组展平为层次CSV,php,arrays,csv,Php,Arrays,Csv,我有一个树状结构的部门阵列,我需要将其展平为CSV(显示每个最终部门的完整路径) 假设我有以下数组: $arr = array("AA" => ["BB" => [], "CC" => ["DD" => [], "EE" => []]], "FF" => ["GG" =>[]]); 变量转储: array(2) { ["AA"]=> array(2) { ["BB"]=> array(0) { } [
$arr = array("AA" => ["BB" => [], "CC" => ["DD" => [], "EE" => []]], "FF" => ["GG" =>[]]);
变量转储:
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那样工作。编写递归函数应该很简单,如下所示:
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
你是那个弹出函数然后删除它的海报吗?因为不管是谁,他们第一次得到的!CSV输出是为了帮助前端人员进行产品映射-他们希望CSV像树一样排序,但显示每个部门的完整路径-我曾尝试过类似的递归函数,但最终总是得到子阵列,我可以将其展平!我删除了它,因为我发现用例失败了-@BenDuffin-重新发布答案现场-完全符合我的要求。我很擅长将东西递归地构建成一个树结构,但将它展平似乎要困难得多——谢谢!