php 递归 返回,php递归函数返回值返回不出的问题
今天上班用到了递归函数求分类最上级,代码如下//分类递归查找上级分类
function get_cat_pid($cat_id,$data){
$sql = "select cat_id,cat_name,parent_id from ".$GLOBALS['hhs']->table('category')." where cat_id= ".$cat_id;
$pid = $GLOBALS['db']->getRow($sql);
$data[]=$pid;
if($pid['parent_id']!=0){
get_cat_pid($pid['parent_id'],$data);
return;
}else{
var_dump($data);
return $data;
}
}
控制器代码如下var_dump(get_cat_pid($cat_parent_id,array()));
发现无论如何,函数的打印结果是正确的,到return的时候只能打印一个null,一直改都没法解决
后来想到了存session,存session的确解决了,但感觉非常不好
直到我度娘到了&$这个东西,
百度一下释义,说是引用变量
$b=&$a时,当$a变了$b值也会变,$b值变了$a也会变,所以经过改进//分类递归查找上级分类
function get_cat_pid($cat_id,&$data){
$sql = "select cat_id,cat_name,parent_id from ".$GLOBALS['hhs']->table('category')." where cat_id= ".$cat_id;
$pid = $GLOBALS['db']->getRow($sql);
$data[]=$pid;
if($pid['parent_id']!=0){
get_cat_pid($pid['parent_id'],$data);
return;
}else{
return;
}
}get_cat_pid($cat_parent_id,$a);
var_dump($a);
解决了递归函数传值不出的问题,但我至今还不知道为什么return不出值.....
经过了大神的教诲,现在终于明白为什么会返回null了
函数的return是返回给调用这个函数的值,当循环两次值为0时,会返回给循环第一次的本身函数,然后再返回给调用函数的...
大神原话
这样我懂了两个知识点:
1,函数不管是if还是else都得写个return;
2,加强基础啊!!!!
顺便把前面没有return的地方改下
本文为仙士可原创文章,转载无需和我联系,但请注明来自仙士可博客www.php20.cn
php 递归 返回,php递归函数返回值返回不出的问题相关推荐
- Go 学习笔记(15)— 函数(01)[函数定义、函数特点、多值返回、实参形参、变长参数,函数作为参数调用]
1. 函数定义 Go 语言最少有个 main() 函数.函数声明告诉了编译器函数的名称,返回类型和参数. func funcName(parameter_list)(result_list) {fun ...
- return返回值返回到哪里
c语言return,返回给了上一级,比如一个递归程序,从第三层返回到第二层:又比如一个普通的子程序,那就返回到主程序中去. 主程序中return返回给了操作系统. main函数调用了sum函数,sum ...
- c语言如何返回主程序,c语言return返回值给谁
c语言return返回值给谁 发布时间:2020-04-26 15:49:16 来源:亿速云 阅读:337 作者:小新 今天小编给大家分享的是c语言return返回值给谁,相信很多人都不太了解,为了让 ...
- Go 学习笔记(26)— Go 习惯用法(多值赋值,短变量声明和赋值,简写模式、多值返回函数、comma,ok 表达式、传值规则)
1. 多值赋值 可以一次性声明多个变量,并可以在声明时赋值,而且可以省略类型,但必须遵守一定的规则要求. package main import "fmt"func main() ...
- pandas使用groupby函数和count函数返回的是分组下每一列的统计值(不统计NaN缺失值)、如果多于一列返回dataframe、size函数返回分组下的行数结果为Series(缺失值不敏感)
pandas使用groupby函数和count函数返回的是分组下每一列的统计值(不统计NaN缺失值).如果多于一列返回dataframe.size函数返回分组下的行数结果为Series(不区分缺失值和 ...
- pytorch torch.item()(返回此张量的值作为标准Python数字。 这仅适用于具有一个元素的张量。)
https://pytorch.org/docs/1.1.0/tensors.html?highlight=item#torch.Tensor.item item() → number Returns ...
- python numpy.arange() 函数的使用方法 (在给定间隔内返回均匀间隔的值)
numpy.arange(start, stop, step, dtype = None) 在给定间隔内返回均匀间隔的值 参数: start -- 开始位置,数字,可选项,默认起始值为0 stop - ...
- golang函数多值返回示例
多值返回 函数可以返回任意数量的返回值. swap 函数返回了两个字符串. package mainimport "fmt"func swap(x, y string) (stri ...
- mybatis新增时将主键值返回(注解方式)
mybatis新增时将主键值返回: @Insert("insert into driver_account_appeal (driver_id,driver_name,driver_phon ...
- Boost:由内部绑定的值返回的智能指针的测试程序
Boost:由内部绑定的值返回的智能指针的测试程序 实现功能 C++实现代码 实现功能 由内部绑定的值返回的智能指针的测试程序 C++实现代码 #include <boost/config.hp ...
最新文章
- InfluxData【环境搭建 02】时序数据库客户端 InfluxCLI 最新版本安装启动验证(在线安装+离线安装及各版本下载地址)
- c++ 获取数组的长度
- 关于网页授权的两种scope的区别说明
- php 时间戳获取周几,PHP实现根据时间戳获取周几的方法,php戳获取周_PHP教程
- 用exists代替distinct
- cocos2d-android-1 使用方法
- flutter DateTime 日期时间详细解析 Dart语言基础
- 我的世界pc正版好玩的服务器,都来看看好玩的服务器
- 老华为交换机S3500配置SSH
- 财经职业技能测试的软件,2020技能 2.财经管理类 职业技能测试考试大纲(试行)...
- 文字跳跃率与图片跳跃率
- 笔记本加装固态硬盘后系统迁移,开机出现桌面闪烁问题的解决方法
- Java调用第三方天气预报接口示范
- java使用阿里云发送通知短信
- Java LocalDateTime给当前时间加半小时
- 【互动赠书】第 4 期开奖,第 5 期书单(21本)
- Xshell 免密连接云主机(以Vultr云服务为例)
- P2P之UDP穿透NAT的原理与实现(附源代码)
- Unity使用暴风魔镜VR游戏开发
- OMS系统是什么?主要功能和优势有哪些?