php - PHP - 将树数组展平为分层 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 工作的子数组
解决方案
编写递归函数应该很简单:
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
推荐阅读
- postgresql - 我在 MERGE 语句中遇到语法错误
- javascript - Django Ajax 我将如何使用 ajax 而不是普通请求删除评论?
- javascript - 如何重构我的 POST fetch 函数以与 Redux 更加异步?
- javascript - 在cheerio上获取所需输入(html)的字符串值
- c++ - while循环输入文件中不需要的字符串
- database - sqlplus错误创建具有多个外键的表
- typescript - 尝试以编程方式连接到同一 vpc 中的 AWS DocumentDB,但连接失败
- r - 当数据集包含长达 25 年的信息时,用于绘制 10 年内有多少人患上糖尿病的 Kaplan Meier 图的 R 代码是什么?
- sql - SQL Server:使用同一表中的相同值更新多个不同的行
- html - CSS - 列像具有动态内容的弹性框