今天上班用到了递归函数求分类最上级,代码如下//分类递归查找上级分类

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递归函数返回值返回不出的问题相关推荐

  1. Go 学习笔记(15)— 函数(01)[函数定义、函数特点、多值返回、实参形参、变长参数,函数作为参数调用]

    1. 函数定义 Go 语言最少有个 main() 函数.函数声明告诉了编译器函数的名称,返回类型和参数. func funcName(parameter_list)(result_list) {fun ...

  2. return返回值返回到哪里

    c语言return,返回给了上一级,比如一个递归程序,从第三层返回到第二层:又比如一个普通的子程序,那就返回到主程序中去. 主程序中return返回给了操作系统. main函数调用了sum函数,sum ...

  3. c语言如何返回主程序,c语言return返回值给谁

    c语言return返回值给谁 发布时间:2020-04-26 15:49:16 来源:亿速云 阅读:337 作者:小新 今天小编给大家分享的是c语言return返回值给谁,相信很多人都不太了解,为了让 ...

  4. Go 学习笔记(26)— Go 习惯用法(多值赋值,短变量声明和赋值,简写模式、多值返回函数、comma,ok 表达式、传值规则)

    1. 多值赋值 可以一次性声明多个变量,并可以在声明时赋值,而且可以省略类型,但必须遵守一定的规则要求. package main import "fmt"func main() ...

  5. pandas使用groupby函数和count函数返回的是分组下每一列的统计值(不统计NaN缺失值)、如果多于一列返回dataframe、size函数返回分组下的行数结果为Series(缺失值不敏感)

    pandas使用groupby函数和count函数返回的是分组下每一列的统计值(不统计NaN缺失值).如果多于一列返回dataframe.size函数返回分组下的行数结果为Series(不区分缺失值和 ...

  6. pytorch torch.item()(返回此张量的值作为标准Python数字。 这仅适用于具有一个元素的张量。)

    https://pytorch.org/docs/1.1.0/tensors.html?highlight=item#torch.Tensor.item item() → number Returns ...

  7. python numpy.arange() 函数的使用方法 (在给定间隔内返回均匀间隔的值)

    numpy.arange(start, stop, step, dtype = None) 在给定间隔内返回均匀间隔的值 参数: start -- 开始位置,数字,可选项,默认起始值为0 stop - ...

  8. golang函数多值返回示例

    多值返回 函数可以返回任意数量的返回值. swap 函数返回了两个字符串. package mainimport "fmt"func swap(x, y string) (stri ...

  9. mybatis新增时将主键值返回(注解方式)

    mybatis新增时将主键值返回: @Insert("insert into driver_account_appeal (driver_id,driver_name,driver_phon ...

  10. Boost:由内部绑定的值返回的智能指针的测试程序

    Boost:由内部绑定的值返回的智能指针的测试程序 实现功能 C++实现代码 实现功能 由内部绑定的值返回的智能指针的测试程序 C++实现代码 #include <boost/config.hp ...

最新文章

  1. InfluxData【环境搭建 02】时序数据库客户端 InfluxCLI 最新版本安装启动验证(在线安装+离线安装及各版本下载地址)
  2. c++ 获取数组的长度
  3. 关于网页授权的两种scope的区别说明
  4. php 时间戳获取周几,PHP实现根据时间戳获取周几的方法,php戳获取周_PHP教程
  5. 用exists代替distinct
  6. cocos2d-android-1 使用方法
  7. flutter DateTime 日期时间详细解析 Dart语言基础
  8. 我的世界pc正版好玩的服务器,都来看看好玩的服务器
  9. 老华为交换机S3500配置SSH
  10. 财经职业技能测试的软件,2020技能 2.财经管理类 职业技能测试考试大纲(试行)...
  11. 文字跳跃率与图片跳跃率
  12. 笔记本加装固态硬盘后系统迁移,开机出现桌面闪烁问题的解决方法
  13. Java调用第三方天气预报接口示范
  14. java使用阿里云发送通知短信
  15. Java LocalDateTime给当前时间加半小时
  16. 【互动赠书】第 4 期开奖,第 5 期书单(21本)
  17. Xshell 免密连接云主机(以Vultr云服务为例)
  18. P2P之UDP穿透NAT的原理与实现(附源代码)
  19. Unity使用暴风魔镜VR游戏开发
  20. OMS系统是什么?主要功能和优势有哪些?

热门文章

  1. FTPC--KepWare--OPC--PLC读写
  2. 【转】如何通过PE直接注入USB3.0,3.1和NVME驱动(针对原版win7及ghost系统)
  3. 产线电量管控策略管控不住的问题分析
  4. Tomcat8乱码问题处理
  5. 自走棋投降代码_Dota自走棋投降命令介绍
  6. 安装envi5.3时找不到证书license
  7. BIOS 与 CMOS 概述
  8. 白鹭小游戏-成语挑战-加载页面
  9. C语言 源代码中的换行
  10. EZ-USB FX2LP,CY7C68013A学习笔记[1]