将SQL表转换为文件夹结构

时间:2013-02-25 03:54:29

标签: php sql algorithm

我有一个看起来像这样的表:

|--ID--|--folder_id--|parent_folder_id|--group_id--|
|--01--|------1------|------null------|-parent-----|
|--02--|------2------|-------1--------|-group_id_1-|
|--03--|------3------|-------2--------|-group_id_2-|
|--04--|------4------|-------2--------|-group_id_3-|
|--05--|------5------|-------4--------|-group_id_4-|

我需要将其转换为文件夹结构,其中带有parent_id!= null的每个文件夹行显示在folder_id = parent_id的文件夹下方。我需要以理智的方式做到这一点,并且不知道如何解决这个问题。在创建之后,我将添加与行的group_id对应的项目。

最终,我需要将SQL表转换为如下所示的数组:

$folders["parent"] = array["folder_id_2"] (
    array["folder_id_3"](file 1, file2);
    array["folder_id_4"](
        array["folder_id_5"](file 3, file 4),
        file 5
    );
    file 6
);

1 个答案:

答案 0 :(得分:0)

我可能无法创建您想要的阵列。但是,尝试替代解决方案呢?使用树形结构。这就是我要做的事情:

  1. 声明包含class Folder$parent属性的$files$parent用于引用父Folder个对象,$files将是文件数组。
  2. 迭代数据库记录并从每行实例化Folder个对象。
  3. 将每个Folder个对象'$parent属性设置为引用父Folder个对象。
  4. 通过这种方式,我们可以以树的形式获得文件夹结构。