设为首页收藏本站

全球主机交流论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

搜索
热搜: discuz
查看: 1105|回复: 1
打印 上一主题 下一主题

php递归函数中使用return无法放回值的注意事项

[复制链接]

该用户从未签到

跳转到指定楼层
楼主
发表于 2015-6-25 18:49:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
下面是一个递归函数,列出当前类别上机的所有类别。

function list_class($table,$id,$name,$pid,$url,$str){
        $url2 = str_replace("{CID}",$id,$url);
        $str2 = ' >> <a href="'.$url2.'">'.$name.'</a> ' . $str;
        $sql2 = "select * from {$table} where id = ".$pid;
        $result2 = mysql_query($sql2);
        if($row2 = mysql_fetch_assoc($result2)){
            $this->list_class($table,$row2["id"],$row2["name"],$row2["pid"],$url,$str2);
        } else {
            return $str2;
        }
    }

上面这个函数看起来是没有什么问题的,不运行一下根本不知道他会有错误,return是无法返回值,。

正确的方式如下:
function list_class($table,$id,$name,$pid,$url,$str){
        $url2 = str_replace("{CID}",$id,$url);
        $str2 = ' >> <a href="'.$url2.'">'.$name.'</a> ' . $str;
        $sql2 = "select * from {$table} where id = ".$pid;
        $result2 = mysql_query($sql2);
        if($row2 = mysql_fetch_assoc($result2)){
            return $this->list_class($table,$row2["id"],$row2["name"],$row2["pid"],$url,$str2);
        } else {
            return $str2;
        }
    }

只是在函数前面加了个return,这个递归函数就可以正常返回值了。

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏
回复

使用道具 举报

该用户从未签到

沙发
 楼主| 发表于 2015-8-5 01:24:32 | 只看该作者
不返回值的时候,也可以不加。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|中国U网    

GMT+8, 2024-5-11 10:41 , Processed in 0.073943 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表