dongzhuang6177 2011-03-23 00:28 采纳率: 100%
浏览 20
已采纳

理解PHP / mysql中的递归

I am trying to create and understand recursion in php/mysql

my database looks something like the following

id | woid | parent | name
-------------------------------
1  | 1111 | 0      | pdf
2  | 1111 | 0      | docs
3  | 2222 | 0      | pdf
4  | 2222 | 0      | docs
5  | 3333 | 0      | pdf
6  | 1111 | 2      | folder1
7  | 2222 | 4      | folder3
8  | 3333 | 5      | folder

I would like to have it where if there are tons and tons of parent folders, it will be able to go through all of them. how do i go about doing this.

  • 写回答

2条回答 默认 最新

  • dongque8332 2011-03-23 00:42
    关注

    In order to get SQL to return a more tree-like structure would actually be pretty difficult. Instead, it probably makes more sense (and you'd have a LOT more control over your output) to reorganize the SQL results using PHP.

    SELECT id, woid, parent, name FROM files ORDER by parent ASC;
    

    This will get us everything. Then we iterate through the resultset, storing the result into an array keyed by parent.

    $folders = array();
    foreach ($resultset AS $row) {
        $row['id'] = (int)$row['id'];
        $row['parent'] = (int)$row['parent'];
        if (!$folders[$row['parent']]) $folders[$row['parent']] = array();
        $folders[$row['parent']][] = $row;
    }
    

    Then we can output this array recursively:

    function buildTree($inputArray, $parent = 0) {
        $return = array();
        foreach ($inputArray[$parent] AS $key => $row) {
            if ($inputArray[$row['id']]) {
                $row['children'] = buildTree($inputArray, $row['id']);
            }
            $return[] = $row;
        }
        return $return;
    }
    
    $myStuff = buildTree($folders);
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 公交车和无人机协同运输
  • ¥15 stm32代码移植没反应
  • ¥15 matlab基于pde算法图像修复,为什么只能对示例图像有效
  • ¥100 连续两帧图像高速减法
  • ¥15 组策略中的计算机配置策略无法下发
  • ¥15 如何绘制动力学系统的相图
  • ¥15 对接wps接口实现获取元数据
  • ¥20 给自己本科IT专业毕业的妹m找个实习工作
  • ¥15 用友U8:向一个无法连接的网络尝试了一个套接字操作,如何解决?
  • ¥30 我的代码按理说完成了模型的搭建、训练、验证测试等工作(标签-网络|关键词-变化检测)