$id = !empty($_GET['id']) ? $_GET['id'] : $_G['id'];
echo $id;     这里可以输出$id 有内容
function findc($id) //递归查询出所有的子分类
{
global $mz_mysql;
$kind = $mz_mysql->givemore("kind","where kind=".$id);
if($kind)
{
   foreach($kind as $k=>$v)
{
$v['typedir'] = $v['html'] == 0 ? CSS_PATH.'index.php?ac=list&id='.$v['uid'] :  CSS_PATH.$v['typedir'];
$v['child'] = findc($v['uid']);
$ccc[]=$v;
}
return $ccc;
}
}
echo $id;     这里输出不$id 无内容
$data = findc($id);

解决方案 »

  1.   

    我猜是不是function findc($id)这个id可以给默认初始化了!换个变量名试试
      

  2.   

    echo $id; 这里输出不$id 无内容
    改成 echo 'hello'; 看看返回得了数值吗?怀疑foreach代码有问题。
      

  3.   

    我把那个递归函数放在方法体外了,开始是在内部,估计是内部调用不了吧

    function mysql_channel($id,$posid=0,$flag=0,$rows=10,$order='uid desc'){ //获取栏目
    global $mz_mysql,$_G;
    $data = array();
    if($id !=null)
    {
    $result = $mz_mysql->sql("select * from #@_kind where kind in ($id) and enable=1");
    while($v = mysql_fetch_assoc($result))
    {
    $v['typedir'] = $v['html'] == 0 ? CSS_PATH.'index.php?ac=list&id='.$v['uid'] :  CSS_PATH.$v['typedir'];
    $data[] = $v;
    }
    }
    elseif($id ==null)
    {
    $id = $_G['id'];
    $data = $this->findc($id); //我改成外部调用了,现在没有报错
    }
    return $data;
    }function findc($id) //递归查询出所有的子分类
    {
    global $mz_mysql;
    $kind = $mz_mysql->givemore("kind","where kind=".$id);
    if($kind)
    {
    foreach($kind as $k=>$v)
    {
    $v['typedir'] = $v['html'] == 0 ? CSS_PATH.'index.php?ac=list&id='.$v['uid'] :  CSS_PATH.$v['typedir'];
    $v['child'] = $this->findc($v['uid']);
    $ccc[]=$v;
    }
    return $ccc;
    }
    }