从数据库结果生成多维数组的递归函数

从数据库结果生成多维数组的递归函数

我希望编写一个函数,它接受一个页面/类别数组(从一个平面的数据库结果),并根据父ID生成一个嵌套的页面/类别项数组。我想递归地这样做,这样就可以完成任何级别的嵌套。

例如:我在一个查询中获取所有页面,这就是数据库表的样子

+-------+---------------+---------------------------+|   id  |   parent_id   |           title           |+-------+---------------+---------------------------+|   1   |       0       |   Parent Page             ||   2   |       1       |   Sub Page                ||   3   |       2       |   Sub Sub Page            ||   4   |       0       |   Another Parent Page     |+-------+---------------+---------------------------+

这就是我希望在视图文件中处理的数组:

Array(
    [0] => Array
        (
            [id] => 1
            [parent_id] => 0
            [title] => Parent Page
            [children] => Array
                        (
                            [0] => Array
                                (
                                    [id] => 2
                                    [parent_id] => 1
                                    [title] => Sub Page
                                    [children] => Array
                                                (
                                                    [0] => Array
                                                        (
                                                            [id] => 3
                                                            [parent_id] => 1
                                                            [title] => Sub Sub Page
                                                        )
                                                )
                                )
                        )
        )
    [1] => Array
        (
            [id] => 4
            [parent_id] => 0
            [title] => Another Parent Page
        ))

我已经看过并尝试过我所遇到的几乎每一个解决方案(这里有很多这样的解决方案在堆栈溢出中,但是没有找到足够通用的方法,可以同时适用于页面和类别。

这是我得到的最接近的,但它不起作用,因为我把孩子分配给第一级父母。



慕盖茨4494581
浏览 608回答 3
3回答

白衣非少年

可以使用php将MySQL结果输入数组,然后使用它。$categoryArr = Array();while($categoryRow = mysql_fetch_array($category_query_result)){     $categoryArr[] = array('parentid'=>$categoryRow['parent_id'],             'id'=>$categoryRow['id']);    }
打开App,查看更多内容
随时随地看视频慕课网APP