递归函数创建数组

时间:2010-06-14 05:52:02

标签: php mysql recursion tree

我使用kohana框架,我正在尝试编写递归函数来创建类别树。

我的分类表

id      int(11)     NO  PRI     NULL    auto_increment
name    varchar(50)     NO      NULL     
parent_id   int(11)     NO      NULL     
projects_count  int(11)     NO      NULL     

我的例子不起作用

public static function category_list($parent_id = 0)
{
    $result =  Database::instance()->query('
        SELECT name, projects_count 
        FROM project_categories
        WHERE parent_id = ?', 
        array($parent_id)
    );

    $project_categories = array();
    foreach($result as $row)
    {
        $project_categories[] = $row;

        Project_Categories_Model::factory()->category_list($parent_id + 1);
    }

    return $project_categories;
}

1 个答案:

答案 0 :(得分:1)

使用这种分层数据实现非常不理想,因为要获得所需的每个子类别,都需要对数据库进行单独查询。像这里你想创建递归函数。

如果您仍然可以更改表格架构,请查看Managing Hierarchical Data in MySQL

本文描述了一个解决方案,如何在一次查询中获取整个层次结构,因此不需要递归函数。