php递归函数中使用return的时候会碰到无法正确返回想要的值得情况,如果不明白其中的原因,很难找出错误的,就下面的具体例子来说明一下吧:
复制代码 代码如下:

function test($i){
$i-=4;
if($i<3){
return $i;
}else{
test($i); //递归函数
}
}
echotest(30);

这段代码看起来没有问题,如果不运行一下估计你也不会认为他有什么问题,及时运行起来发现有问题你也不一定知道哪里有问题,但其实这个函数的else里面是有问题的。在这段代码里面执行的结果是没有返回值的。所以虽然满足条件 $i 复制代码 代码如下:

function test($i){
$i-=4;
if($i<3){
return $i;
}else{
return test($i);//增加return,让函数返回值
}
}
echotest(30);

 

要加两个return 1、返回值 2、返回递归函数 我做的无限极分类导航读取是这样实现的

public function checkparentnav($id,$uid,$k,$arr){ //分配无限极父级导航 $k计数器
             $nowpath = $this->find($id); //当前目录信息arr
             if($nowpath['uid'] == $uid){
                 $arr[$k]['id'] = $nowpath['id'];
                 $arr[$k]['name'] = $nowpath['name'];
                if($nowpath['pid'] != 1){ //非顶级目录继续查询
                    return $this->checkparentnav($nowpath['pid'],$uid,++$k,&$arr); //自调用
                }else{
                    return $arr;
                }

            }else{
                //用户权限非法操作
            }
        }

利用nginx 反向代理解决跨域问题

server { listen 8094; server_name localhost; #charset koi8-r; #access_log logs/host.access.log m...

阅读全文

php 7.1 使用 json_encode 函数造成浮点类型数据出现精度问题

新项目用的 php 7.1.13 版本,在使用过程中发现 浮点类型 数据经过 json_encode 之后会出现精度问题。 举个例子: $data = [ 'stock' => '100', ...

阅读全文

php 正确的输出json格式

php直接输出json格式,很多新手有一个误区,以为用echo json_encode($data);这样就是输出json数据了,没错这样输出文本是json格式文本而不是json数据,正确的...

阅读全文

评论已经关闭。