php - 获取所有子类别的递归函数

标签 php mysql algorithm recursion

这是我正在尝试做的事情: - 我需要一个函数,当作为参数传递时,一个 ID(对于一类事物)将提供所有子类别和子子类别和子子子子..等。 - 我正在考虑使用递归函数,因为我不知道子类别的数量,它们的子类别等等 所以这是我到目前为止尝试做的事情

function categoryChild($id) {

    $s = "SELECT * FROM PLD_CATEGORY WHERE PARENT_ID = $id";
    $r = mysql_query($s);

    if(mysql_num_rows($r) > 0) {

        while($row = mysql_fetch_array($r))
            echo $row['ID'].",".categoryChild($row['ID']);
    }
    else {
        $row = mysql_fetch_array($r);
        return $row['ID'];
    }
}

如果我使用 return 而不是 echo,我将不会得到相同的结果。我需要一些帮助来解决这个问题或从头开始重写它

最佳答案

我很难弄清楚你的功能。我认为这会做你想要的。它获取 ID 为 $id 的类别的所有子项,以及它们的子项(从而获得您想要的整个子类别、子子类别的效果)。

function categoryChild($id) {
    $s = "SELECT ID FROM PLD_CATEGORY WHERE PARENT_ID = $id";
    $r = mysql_query($s);

    $children = array();

    if(mysql_num_rows($r) > 0) {
        # It has children, let's get them.
        while($row = mysql_fetch_array($r)) {
            # Add the child to the list of children, and get its subchildren
            $children[$row['ID']] = categoryChild($row['ID']);
        }
    }

    return $children;
}

这个函数将返回:

$var = array(
        'categoryChild ID' => array(
                'subcategoryChild ID' => array(
                        'subcategoryChild child 1' => array(),
                        'subcategoryChild child 2' => array()
                )
        ),
        'anotherCategoryChild ID' => array() # This child has no children of its own
);

它基本上返回一个包含子 ID 的数组和一个包含其子 ID 的数组。我希望这会有所帮助。

关于php - 获取所有子类别的递归函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2398402/

相关文章:

algorithm - 基于可变形部分的模型可以用于图像分类吗?

javascript - 如何使用 ajax 在 Javascript 中发送 gamescore 元素

PHP 工作但给出 sql SYNTAX 错误

php - & 符号和哈希使我的 MYSQL 查询崩溃

MySQL 组合多个查询的最佳方式

mysql - Sequelize 在收到 SequelizeDatabaseError : ER_LOCK_DEADLOCK 后正在创建悬空/挂起的 mysql 连接

java - Android 在使用 copyPixelsToBuffer 时如何应用 alpha channel ?

php - javascript 代码 - 包括 php

php - 如何让我的用户保持登录状态 "forever"?

c++ - 桶排序和计数排序的场景