Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP-将树数组展平为层次CSV_Php_Arrays_Csv - Fatal编程技术网

PHP-将树数组展平为层次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) { } [

我有一个树状结构的部门阵列,我需要将其展平为CSV(显示每个最终部门的完整路径)

假设我有以下数组:

$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-重新发布答案现场-完全符合我的要求。我很擅长将东西递归地构建成一个树结构,但将它展平似乎要困难得多——谢谢!