请教一下,这个为什么不行?结果怎么着都不对....求助啊求助... if ($reid==0) { echo "检查是否已经运行到这里 <br />"; return $data['typename'] ; //经检查,这边没有返回} 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 改试试:if ($reid==0) { echo "检查是否已经运行到这里 <br />"; return $data['typename'] ; } 这和递归的原理有关系。因为递归的过程是这样的:1 2 3 4 3 21所以你最终返回的还是重孙目录修改muses($reid)为echo muses($reid);你就能看到其中的有意思之处。 最后的 return $data['typename'] ; //这边返回了,但是..值怎么会是..... 这句不要了 function muses($typeid) { $con = mysql_connect("localhost","admin","seeingyoua"); mysql_select_db("dedecms_ewoka", $con); mysql_query('SET NAMES utf8'); $reult_main=mysql_query("select typename,reid,typedir,defaultname from dede_arctype where id=$typeid",$con); while ($reid_tmp = mysql_fetch_array($reult_main)) { $reid = $reid_tmp['reid']; $data['typename'] = $reid_tmp['typename']; $data['typedir'] = $reid_tmp['typedir']; $data['dfname'] = $reid_tmp['defaultname']; } $con->close; echo "执行返回".$data['typename']." <br />"; //显示信息,检查是否进行了递归...(确实递归了) if ($reid <>0) { muses($reid); } if ($reid==0) { echo "检查是否已经运行到这里 <br />"; return $data['typename'] ; } } $fd=muses(18); echo '$fd='.$fd; ?> 这样改就可以了,呵呵. if ($reid <>0) { return muses($reid);}if ($reid==0) { return $data['typename']; } if ($reid==0) { echo "检查是否已经运行到这里 <br />"; $result = $data['typename'] ; //此处改赋值试试,并且$result使用&$result传入 } 算了...我换了一种思路,问题好像解决了.....<?php function gen($reid){$con = mysql_connect("localhost","admin","seeingyoua");mysql_select_db("dedecms_ewoka", $con);mysql_query('SET NAMES utf8');while ($reid<>0){ $reult_main=mysql_query("select typename,reid,typedir,defaultname from dede_arctype where id=$reid",$con); while ($reid_tmp = mysql_fetch_array($reult_main)) {$reid = $reid_tmp['reid'];$data['typename'] = $reid_tmp['typename'];$data['typedir'] = $reid_tmp['typedir'];$data['dfname'] = $reid_tmp['defaultname']; } } $con->close;return $data['typename'];}$fdd=gen(18);echo $fdd;?> <?php function muses($typeid) { $con = mysql_connect("localhost","admin","seeingyoua"); mysql_select_db("dedecms_ewoka", $con); mysql_query('SET NAMES utf8'); $reult_main=mysql_query("select typename,reid,typedir,defaultname from dede_arctype where id=$typeid",$con); while ($reid_tmp = mysql_fetch_array($reult_main)) { $reid = $reid_tmp['reid']; $data['typename'] = $reid_tmp['typename']; $data['typedir'] = $reid_tmp['typedir']; $data['dfname'] = $reid_tmp['defaultname']; } $con->close; echo "执行返回".$data['typename']." <br />"; //显示信息,检查是否进行了递归...(确实递归了) if ($reid==0) { echo "检查是否已经运行到这里 <br />"; return $reid; //经检查,这边没有返回 } if ($reid <>0) { muses($reid); } return $data['typename'] ; //这边返回了,但是..值怎么会是..... } $fd=muses(18); echo '$fd='.$fd; ?> 试试,其实上面的所有递归应是都没有问题的有问题的是你不知道递归的执行顺序其次是注意return,不知弟归中return的用法和含义,理论上,如果 前面有一个return了,下面return就没用了你可改成echo就没多大问题了 坐等xjl756425616 如何在点击“下一步”按钮时进入不同页面 == 的问题 小白问题,在线等:服务器需要怎么设置才能让别人访问自己的网站? 计算数组的差集,并删除空行??? 遇到了PHP处理的难题,还望指教! 请教高手一个自动换行的问题????:) 请教一个简单的PHP问题,限时结帖 Windows2000 server+php4.3不能运行问题 Fatal error: Call to undefined function: strlen 无聊中,放分,呵呵! 问一个简单的问题
if ($reid==0) {
echo "检查是否已经运行到这里 <br />";
return $data['typename'] ;
}
因为递归的过程是这样的:
1
2
3
4
3
2
1
所以你最终返回的还是重孙目录
修改muses($reid)为echo muses($reid);你就能看到其中的有意思之处。
return $data['typename'] ; //这边返回了,但是..值怎么会是.....
这句不要了
function muses($typeid)
{
$con = mysql_connect("localhost","admin","seeingyoua");
mysql_select_db("dedecms_ewoka", $con);
mysql_query('SET NAMES utf8');
$reult_main=mysql_query("select typename,reid,typedir,defaultname from dede_arctype where id=$typeid",$con);
while ($reid_tmp = mysql_fetch_array($reult_main))
{
$reid = $reid_tmp['reid'];
$data['typename'] = $reid_tmp['typename'];
$data['typedir'] = $reid_tmp['typedir'];
$data['dfname'] = $reid_tmp['defaultname']; }
$con->close;
echo "执行返回".$data['typename']." <br />"; //显示信息,检查是否进行了递归...(确实递归了) if ($reid <>0) {
muses($reid);
} if ($reid==0) {
echo "检查是否已经运行到这里 <br />";
return $data['typename'] ;
}
}
$fd=muses(18); echo '$fd='.$fd;
?>
这样改就可以了,呵呵.
if ($reid <>0) {
return muses($reid);
}if ($reid==0) {
return $data['typename'];
}
echo "检查是否已经运行到这里 <br />";
$result = $data['typename'] ; //此处改赋值试试,并且$result使用&$result传入
}
function gen($reid)
{
$con = mysql_connect("localhost","admin","seeingyoua");
mysql_select_db("dedecms_ewoka", $con);
mysql_query('SET NAMES utf8');
while ($reid<>0)
{
$reult_main=mysql_query("select typename,reid,typedir,defaultname from dede_arctype where id=$reid",$con);
while ($reid_tmp = mysql_fetch_array($reult_main))
{
$reid = $reid_tmp['reid'];
$data['typename'] = $reid_tmp['typename'];
$data['typedir'] = $reid_tmp['typedir'];
$data['dfname'] = $reid_tmp['defaultname']; }
}
$con->close;
return $data['typename'];
}
$fdd=gen(18);echo $fdd;
?>
{
$con = mysql_connect("localhost","admin","seeingyoua");
mysql_select_db("dedecms_ewoka", $con);
mysql_query('SET NAMES utf8');
$reult_main=mysql_query("select typename,reid,typedir,defaultname from dede_arctype where id=$typeid",$con);
while ($reid_tmp = mysql_fetch_array($reult_main))
{
$reid = $reid_tmp['reid'];
$data['typename'] = $reid_tmp['typename'];
$data['typedir'] = $reid_tmp['typedir'];
$data['dfname'] = $reid_tmp['defaultname']; }
$con->close;
echo "执行返回".$data['typename']." <br />"; //显示信息,检查是否进行了递归...(确实递归了) if ($reid==0) {
echo "检查是否已经运行到这里 <br />";
return $reid; //经检查,这边没有返回
} if ($reid <>0) {
muses($reid);
} return $data['typename'] ; //这边返回了,但是..值怎么会是.....
}
$fd=muses(18); echo '$fd='.$fd;
?>
试试,其实上面的所有递归应是都没有问题的有问题的是你不知道递归的执行顺序
其次是注意return,不知弟归中return的用法和含义,理论上,如果 前面有一个return了,下面return就没用了
你可改成echo就没多大问题了