PHP-将树数组展平为分层CSV

时间:2019-05-08 10:35:36

标签: php arrays csv

我有一个部门的树形结构数组,我需要将其展平为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的子数组结尾

1 个答案:

答案 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