计算儿童类别的问题

时间:2010-04-03 13:55:54

标签: php mysql

我有这张桌子:

fourn_category (id , sub)

我正在使用此代码来计算:

function CountSub($id){
$root = array($id);
 $query = mysql_query("SELECT id FROM fourn_category WHERE sub = '$id'");                                            

    while( $row = mysql_fetch_array( $query, MYSQL_ASSOC ) ){

        array_push($root,$row['id']);
       CountSub($row['id']);
    }        

    return implode(",",$root);  
}

它将类别ID返回为1,2,3,4,5,使用它来计算子IN()

但问题在于它是:

类别1 &gt;第2类&gt; <类别3>第4类&gt;第5类

第1类有1个孩子而不是4个。 为什么?我怎样才能得到所有孩子的树木?

1 个答案:

答案 0 :(得分:1)

根据我的理解,我怀疑您的代码中存在范围问题。试试:

function CountSub($id, &$current=array()){
    array_push($current, $id);
    $query = mysql_query("SELECT id FROM fourn_category WHERE sub = '$id'");                                            

    while( $row = mysql_fetch_array( $query, MYSQL_ASSOC ) ){
        CountSub($row['id'], $current);
    }        

    return implode(",",$current);  
}

CountSub(1)

在您的代码中,在递归函数的每个级别创建一个新的 $ root 数组,并且递归调用永远不会修改原始创建的数组,这可能是您的问题

我希望这会有所帮助 杰罗姆