include("Smarty_Inc.php"); $menu_arr=array();
$sql = "select * from `setclass` order by place asc, ID Desc";
$query=mysql_query($sql);
while($row = mysql_fetch_array($query)){
    $menu_arr[] = array($row['ID'],$row['setname'],$row['pid'],$row['place']);
}
print_r($menu_arr); //在这里可以打印出数据function dafenglei_table($m,$id)
{
global $menu_arr;
print_r($menu_arr); //在这里得打印不出数据?
if($id=="") $id=0;
$n = str_pad('',$m,'-',STR_PAD_RIGHT);
$n = str_replace("-","   ",$n);

for($i=0;$i<count($menu_arr);$i++){
if($class_arr[$i][2]==$id){
$str=$str. "<tr>\n";
$str=$str. "   <td height=28 bgcolor=\"#FFFFFF\">".$n."|—<a href=\"?action=edit&amp;id=".$class_arr[$i][0]."\">".$class_arr[$i][1]."</a></td>\n";
$str=$str. "   <td bgcolor=\"#FFFFFF\"><div align=\"center\">".$class_arr[$i][3]."</div></td>\n";
$str=$str. " </tr>\n";
dafenglei_table($m+1,$menu_arr[$i][0]);
}
 echo $str;
}

}dafenglei_table(0,0);$smarty->assign("onearray",dafenglei_table(0,0));
$smarty->display("left.htm");print_r($menu_arr); 打印了两个地方,一个可以打印出来,调用的时候就不能打印呢

解决方案 »

  1.   

    }
    print_r($menu_arr); //在这里可以打印出数据#如果上面的$menu_arr有值,完全可以作为函数的参数
    function dafenglei_table($m,$id,$menu_arr)
      

  2.   

    你说的现象是不存在的,除非是写错了变量名倒是 $smarty->assign("onearray",dafenglei_table(0,0)); 这里会有问题
    因为 dafenglei_table 没有返回值,也就无法向 onearray 赋值的
      

  3.   

    不可能吧,会不会是已经打印出来了,但被smarty忽略掉了,要不单独建个PHP文件看看输出结果。
      

  4.   

    你的function中没有返回值,当然就没有数据显示:
    $smarty->assign("onearray",dafenglei_table(0,0));添加return:function dafenglei_table($m,$id)
    {
        global $menu_arr;
        print_r($menu_arr); //在这里得打印不出数据?
        if($id=="") $id=0;
        $n = str_pad('',$m,'-',STR_PAD_RIGHT);
        $n = str_replace("-","&nbsp;&nbsp;&nbsp;",$n);
        
        for($i=0;$i<count($menu_arr);$i++){
            if($class_arr[$i][2]==$id){
            $str=$str. "<tr>\n";
            $str=$str. "      <td height=28 bgcolor=\"#FFFFFF\">".$n."|—<a href=\"?action=edit&amp;id=".$class_arr[$i][0]."\">".$class_arr[$i][1]."</a></td>\n";
            $str=$str. "      <td bgcolor=\"#FFFFFF\"><div align=\"center\">".$class_arr[$i][3]."</div></td>\n";
            $str=$str. "    </tr>\n";        
                dafenglei_table($m+1,$menu_arr[$i][0]);
            }
         //echo $str;  //这里会循环输出
        }
        return $str;
    }
      

  5.   


    我按照你的说法单独做个php文件时没有问题的,smarty为什么忽略掉了呢
      

  6.   

    按#8的方法试一下,先将print_r注掉