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

use*_*530 11 php mysql algorithm recursion

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

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'];
    }
}
Run Code Online (Sandbox Code Playgroud)

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

Bru*_*ros 13

我很难弄清楚你的功能.我想这会做你想要的.它获取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;
}
Run Code Online (Sandbox Code Playgroud)

此函数将返回:

$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
);
Run Code Online (Sandbox Code Playgroud)

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


Mat*_*hew 5

数据库树到多维数组

<?php
function getTree($rootid)
{
   $arr = array();

   $result = mysql_query("select * from PLD_CATEGORY where PARENT_ID='$rootid'");
   while ($row = mysql_fetch_array($result)) { 
     $arr[] = array(
       "Title" => $row["Title"],
       "Children" => getTree($row["id"])
     );
   }
   return $arr;
}
?>
Run Code Online (Sandbox Code Playgroud)