各位大侠,我想在递归里把循环出来的值全部放到数组里,然后获得数组,我这个递归获取不到全部的,请各位大侠多多指点,小弟拜谢
function bind1($db,$u_ppid)
{
$menus[] = array('menu_id' => $u_ppid, 'parent_id' => -1, 'name' => $u_ppid);
$strSql = "Select u_id,u_date,u_pid,u_type,u_types,u_status from u_list where u_pid='$u_ppid' order by u_date asc";
$result=$db->query($strSql); //发送SQL请求
$num=$db->rows($result);
if($num > 0)
{
$i = 0;
$menus;
while($row=$db->fetch($result))
{
$u_type = $row["u_type"];
if($u_type == "1")
{
$u_type = " < 左 > ";
}
else
{
$u_type = " < 右 > ";
}
$u_types = " < 单数:".$row["u_types"]." > ";
$u_id = $row["u_id"];
$u_date = $row["u_date"];
$u_pid = $row["u_pid"];
$u_status = $row["u_status"];
if($u_status == "1")
{
$u_status = " < 状态:禁用 > ";
}
else if($u_status == "0")
{
$u_status = " < 状态:启用 > ";
}
$str_title = $u_id.$u_type.$u_types.$u_status;
$menus[] = array('menu_id' => $u_id, 'parent_id' => $u_pid, 'name' => $str_title);
//$menus = array($u_id, $u_pid, $str_title);
$menus = array_merge_recursive($menus,bind2($db,$u_id,""));
}
/*foreach($menus as $aaa)
{
$i++;
echo "<script>alert('$i');</script>";
}*/
$opts = array('useStatusText' => 'true','closeSameLevel' => 'true');
echo menu($menus, $opts);
}
}
function bind2($db,$pid,$menus)
{
$strSql = "Select u_id,u_date,u_pid,u_type,u_types,u_status from u_list where u_pid='$pid'";
$result=$db->query($strSql); //发送SQL请求
$num=$db->rows($result);
if($num > 0)
{
while($row=$db->fetch($result))
{
$u_type = $row["u_type"];
if($u_type == "1")
{
$u_type = " < 左 > ";
}
else
{
$u_type = " < 右 > ";
}
$u_types = " < 单数:".$row["u_types"]." > ";
$u_id = $row["u_id"];
$u_date = $row["u_date"];
$u_pid = $row["u_pid"];
$u_status = $row["u_status"];
if($u_status == "1")
{
$u_status = " < 状态:禁用 > ";
}
else if($u_status == "0")
{
$u_status = " < 状态:启用 > ";
}
$str_title = $u_id.$u_type.$u_types.$u_status;
$menus[] = array('menu_id' => $u_id, 'parent_id' => $u_pid, 'name' => $str_title);
//$menus = array($u_id, $u_pid, $str_title);
bind2($db,$u_id,$menus);
}
}
/*$i = 0;
//foreach($menus as $aaa)
//{
// echo "<script>alert('$aaa');</script>";
//}*/
return $menus;
}
function bind1($db,$u_ppid)
{
$menus[] = array('menu_id' => $u_ppid, 'parent_id' => -1, 'name' => $u_ppid);
$strSql = "Select u_id,u_date,u_pid,u_type,u_types,u_status from u_list where u_pid='$u_ppid' order by u_date asc";
$result=$db->query($strSql); //发送SQL请求
$num=$db->rows($result);
if($num > 0)
{
$i = 0;
$menus;
while($row=$db->fetch($result))
{
$u_type = $row["u_type"];
if($u_type == "1")
{
$u_type = " < 左 > ";
}
else
{
$u_type = " < 右 > ";
}
$u_types = " < 单数:".$row["u_types"]." > ";
$u_id = $row["u_id"];
$u_date = $row["u_date"];
$u_pid = $row["u_pid"];
$u_status = $row["u_status"];
if($u_status == "1")
{
$u_status = " < 状态:禁用 > ";
}
else if($u_status == "0")
{
$u_status = " < 状态:启用 > ";
}
$str_title = $u_id.$u_type.$u_types.$u_status;
$menus[] = array('menu_id' => $u_id, 'parent_id' => $u_pid, 'name' => $str_title);
//$menus = array($u_id, $u_pid, $str_title);
$menus = array_merge_recursive($menus,bind2($db,$u_id,""));
}
/*foreach($menus as $aaa)
{
$i++;
echo "<script>alert('$i');</script>";
}*/
$opts = array('useStatusText' => 'true','closeSameLevel' => 'true');
echo menu($menus, $opts);
}
}
function bind2($db,$pid,$menus)
{
$strSql = "Select u_id,u_date,u_pid,u_type,u_types,u_status from u_list where u_pid='$pid'";
$result=$db->query($strSql); //发送SQL请求
$num=$db->rows($result);
if($num > 0)
{
while($row=$db->fetch($result))
{
$u_type = $row["u_type"];
if($u_type == "1")
{
$u_type = " < 左 > ";
}
else
{
$u_type = " < 右 > ";
}
$u_types = " < 单数:".$row["u_types"]." > ";
$u_id = $row["u_id"];
$u_date = $row["u_date"];
$u_pid = $row["u_pid"];
$u_status = $row["u_status"];
if($u_status == "1")
{
$u_status = " < 状态:禁用 > ";
}
else if($u_status == "0")
{
$u_status = " < 状态:启用 > ";
}
$str_title = $u_id.$u_type.$u_types.$u_status;
$menus[] = array('menu_id' => $u_id, 'parent_id' => $u_pid, 'name' => $str_title);
//$menus = array($u_id, $u_pid, $str_title);
bind2($db,$u_id,$menus);
}
}
/*$i = 0;
//foreach($menus as $aaa)
//{
// echo "<script>alert('$aaa');</script>";
//}*/
return $menus;
}
$strSql = "Select u_id,u_date,u_pid,u_type,u_types,u_status from u_list where u_pid='{$u_ppid}' order by u_date asc"; $strSql = "Select u_id,u_date,u_pid,u_type,u_types,u_status from u_list where u_pid='{$pid}'";
这个就是bind2的返回值啊,我是不是写错地方了,应该在什么地方写合适啊
$menus[] = array('menu_id' => $u_id, 'parent_id' => $u_pid, 'name' => $str_title);
//$menus = array($u_id, $u_pid, $str_title);
bind2($db,$u_id,$menus);这里是如何接受返回值的?
}
}
/*$i = 0;
//foreach($menus as $aaa)
//{
// echo "<script>alert('$aaa');</script>";
//}*/
return $menus;
}
bind1的时候你知道这样用$menus = array_merge_recursive($menus,bind2($db,$u_id,""));那么bind2的时候你为什么要这样用?bind2($db,$u_id,$menus);而不是像bind1的时候那样用?再说你的$menus也不是引用传递,变化了你怎么能获取到
$menus[] = array('menu_id' => $u_id, 'parent_id' => $u_pid, 'name' => $str_title);
//$menus = array($u_id, $u_pid, $str_title);
bind2($db,$u_id,$menus); //打印一下这个,看看有什么现象?
function bind1()
{
$menus[] = array('menu_id' =>'12', 'parent_id' => -1, 'name' => '123');
//发送SQL请求
$num=1;
if($num > 0)
{
$menus[] = array('menu_id' => '1', 'parent_id' => '12', 'name' => 'test');
//$menus = array($u_id, $u_pid, $str_title);
$menus = array_merge_recursive($menus,$this->bind2('t',1,""));
}
/*foreach($menus as $aaa)
{
$i++;
echo "<script>alert('$i');</script>";
}*/
$opts = array('useStatusText' => 'true','closeSameLevel' => 'true');
print_r($menus);
}function bind2($db,$pid,$menus)
{
//发送SQL请求
$num = $pid;
if($num > 0)
{
$pid --;
$menus[] = array('menu_id' => '12', 'parent_id' => '232', 'name' => 'test2');
//$menus = array($u_id, $u_pid, $str_title);
$this->bind2($db,$pid,$menus);
}
/*$i = 0;
//foreach($menus as $aaa)
//{
// echo "<script>alert('$aaa');</script>";
//}*/
return $menus;
}
经改造这样是可以出结果滴!哈哈……