我有这张桌子:
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个。 为什么?我怎样才能得到所有孩子的树木?
答案 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 数组,并且递归调用永远不会修改原始创建的数组,这可能是您的问题
我希望这会有所帮助 杰罗姆