首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

php递归函数返回值返回不出的问题

今天上班用到了递归函数求分类最上级,代码如下 //分类递归查找上级分类 function get_cat_pid($cat_id,$data){     $sql = "select cat_id,cat_name...return的时候只能打印一个null,一直改都没法解决 后来想到了存session,存session的确解决了,但感觉非常不好 直到我度娘到了&$这个东西, 百度一下释义,说是引用变量 $b=&$a时,...当$a变了$b值也会变,$b值变了$a也会变,所以经过改进 //分类递归查找上级分类 function get_cat_pid($cat_id,&$data){     $sql = "select cat_id...        return;     }else{         return;     } } get_cat_pid($cat_parent_id,$a);   var_dump($a); 解决了递归函数传值不出的问题...经过了大神的教诲,现在终于明白为什么会返回null了 函数的return是返回给调用这个函数的值,当循环两次值为0时,会返回给循环第一次的本身函数,然后再返回给调用函数的... 大神原话 ?

4.5K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    php json_encode()函数返回对象和数组问题

    php json_encode() 函数格式化数据时会根据不同的数组类型格式化不同类型的json数据 索引数组时 php $arr = [1,2,3,4,5]; print_r(json_encode($arr)); //输出 [1,2,3,4,5] 关联数组时 php $arr = []; print_r(json_encode($arr)); //输出 [] 索引数组时生成的是数组类型数据,关联数组时生成的是对象类型的数据,空数组返回的是数组类型。...但是当碰到同一个字段返回的数组可能是关联数组也可能是空数组时,就会在app端出现数据类型不一致的问题,解决方式有两种: 一,使用 json_encode的 JSON_FORCE_OBJECT 模式 php $arr = []; print_r(json_encode($arr,JSON_FORCE_OBJECT)); //输出 {} 但是这种存在一个问题,它会把所有的数据都以对象的方式返回,包括索引数组

    3.7K10

    PHP自定义递归函数实现数组转JSON功能【支持GBK编码】

    本文实例讲述了PHP自定义递归函数实现数组转JSON功能。...分享给大家供大家参考,具体如下: 问题: 由于最近的一个项目中要给别的公司提供接口,给他们喂 GBK 编码的 json 数据,但是有一个问题是 PHP 中的 json_encode 加密函数只支持 utf...实现: 想实现这个功能,最主要是观/ /察 json 数据的特点,一开始 LZ 得不到位导致不能完全实现 json_encode 函数的功能,后面参照网上的资料,实现了这个功能(就是一个递归函数): function...is_array($array)) { return ''; } $func = __FUNCTION__; //关键判断是不是关联数组,以此来决定是否需要json加密key和使用[]...格式化工具: JSON在线格式化工具: 在线XML/JSON互相转换工具: json代码在线格式化/美化/压缩/编辑/转换工具: C语言风格/HTML/CSS/json代码格式化美化工具: 希望本文所述对大家PHP

    1.1K00

    PHP 中 json_encode 处理数组的返回信息为 NULL 时的处理

    背景 今天在处理消息队列逻辑时,因为连接不上服务器,返回的错误信息中存在中文乱码 以前的处理方式,就是对返回的信息,使用 json_encode() 编码处理,记录到 错误日志中,方便后期问题排查...但是,此时发现,json_encode() 返回的是 false|NULL ,无法满足我的需求 通过网上的建议,找到一种解决方案 :【PHP json_decode/json_encode 中文内容为...NULL或乱码】 源码 /************************************************************** * * 处理因为数组元素中含有中文乱码时的问题...* @param string &$array 要处理的字符串 * @param string $function 要执行的函数 *...new_key] = $array[$key]; unset($array[$key]); } } } } /** * 处理因为数组元素中含有中文乱码问题时

    2.4K30

    php List()函数及json_encode时无法转为数组的问题

    ​ list 函数实现 PHP中返回多个值(list并不是一个真正的函数,而是一种语言结构) 在众多的编程语言中,有很多都可以在函数中返回多个值,如 java,golang, 但是php却是不支持,虽然在...既然无法原生支持,那我们就自己实现,php内置了大量的函数可以使用,这也是php开发速度快的一个原因....实现方式 : 以数组的方式将多个返回值push进去,使用list函数接受变量并自动赋值 先来介绍下 list() 函数: 官方介绍 list() 方法可以在一次操作中为 一组变量赋值....同样的也可以使用 list() 方法结合 each() 方法 实现 foreach 的功能 json_encode 返回时的问题 当需要返回json数据时, 我们通常会使用 json_encode 将对象或数组转为...推荐方法 可以直接将 原数组的变量 push 到 []中 使用 array_value() 函数, 创建一个只取原数组值,索引为连续索引的数组 使用 sort() 函数 ,同样返回 索引连续的数组

    1.3K21

    PHP的七个数组指针函数

    PHP的七个数组指针函数 ---- 序号 函数 描述 1 reset() 将一个数组的内部指针重置到首位,并返回第一个元素的值 2 end() 将一个数组的内部指针移动到数组的最后一个元素所在的位置,并返回最后一个元素的值...3 prev() 移动数组指针到上一位,返回该位的值,当该位没有元素或是空数组时返回false 4 next() 移动数组指针到下一位,返回该位的值,当该位没有元素或是空数组时返回false 5 key...() 返回当前指针所指向的元素的键,当指针所指的那一位没有元素返回null,空数组返回null 6 current() 返回当前数组指针所指向的值,指针移动超出了数组的末尾或数组为空时返回false 7...each() 返回当前指针所指的元素的值和键,并且移动指针到下一位,从PHP7.2.0开始,此函数已被弃用 2. each() 从 7.2.0 开始被弃用,不推荐再使用 ---- Warning This...Relying on this function is highly discouraged 翻译:从PHP7.2.0开始,此函数已被弃用。非常不鼓励依赖此功能 3.

    57430

    PHP常见排序算法整理学习

    如果成功则返回 TRUE,否则返回 FALSE 【二】.选择排序 思路分析: 每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完 ?...(&$arr, $l=0, $r) { $length = count($arr); //先判断是否需要继续进行 递归出口:数组长度为1,直接返回数组...:数组长度为1,直接返回数组 if(!...$rightArr[] = $arr[$i]; } } //再分别对左边和右边的数组进行相同的排序处理方式递归调用这个函数 $leftArr...sort()函数. 【4】参考文章 十大经典排序算法总结(JavaScript描述)【推荐】 十大经典排序算法PHP实现教程(注意底部的文章目录) PHP 的几种排序算法的比较 【5】提示 本文主要为了学习而生

    94630

    PHP 面试踩过的坑(二)「建议收藏」

    } else { //放入右边 $right_array[] = $arr[$i]; } } //再分别对左边和右边的数组进行相同的排序处理方式递归调用这个函数...已经创建好的对象,挂在到某个全局可以使用的数组上,在需要使用的时候,直接从该数组上获取即可。将对象注册到全局的树上。任何地方直接去访问。 # 适配器模式 将各种截然不同的函数接口封装成统一的API。...语句, print和print_r是函数,语句没有返回值,函数可以有返回值(即便没有用) print() 只能打印出简单类型变量的值(如int,string) print_r() 可以打印出复杂类型变量的值...(如数组,对象) echo 输出一个或者多个字符串 echo:语句结构; print:是函数,有返回值 print_r:能打印数组,对象 var_dump:能打印对象数组,并且带数据类型 17...(1)防止sql注入,对特殊字符进行转义,过滤或者使用预编译sql语句绑定 (2)使用最小权限原则,特别是不要使用root账户,为不同的动作或者操作建立不同的账户 (3)当sql出错时,不要把数据库出错的信息暴露到客户端

    41020

    php 对象转json_php json解析

    在PHP中,可以使用json_decode()函数来将json字符串转换为PHP对象。...json_decode()函数用于解码JSON字符串,把json字符串转成对象或数组,默认转成对象;设置函数的第二个参数为true,则可转成关联数组。...json_decode()函数是PHP中的内置函数,用于对JSON格式的字符串进行解码,可以将JSON格式的字符串转换为PHP变量(object 或 array)。...如果为true,则返回的对象将转换为关联数组。 depth:指定用户指定的递归深度。...返回值:该函数以适当的PHP类型返回编码的JSON值。如果无法解码json或编码数据的深度大于递归限制,则返回NULL。 示例: 第二个参数为 TRUE 时,将返回数组,FALSE 时返回对象。

    8.1K20

    PHP count() 函数

    实例 返回数组中元素的数目: php $cars=array("Volvo","BMW","Toyota"); echo count($cars); ?...> 定义和用法 count() 函数返回数组中元素的数目。 语法 count(array,mode); 参数 描述 array 必需。规定数组。 mode 可选。规定模式。可能的值:0 - 默认。...不对多维数组中的所有元素进行计数 1 - 递归地计数数组中元素的数目(计算多维数组中的所有元素) 说明 count() 函数计算数组中的单元数目或对象中的属性个数。...如果 mode 被设置为 COUNT_RECURSIVE(或 1),则会递归底计算多维数组中的数组的元素个数。 技术细节 返回值: 返回数组中元素的数目。...PHP 版本: 4+ 更新日志: mode 参数是在 PHP 4.2 中新增的。 更多实例 例子 1 递归地对数组进行计数: <?

    1.6K30

    python递归函数讲解_Python递归函数实例讲解

    5、再更改递归函数,递归函数带返回值,代码如下: def digui(n): if n == 0 : return 0 return n+digui(n-1) if __name__ == ‘__main...__’: print (digui(5)) 此函数作用从5+4+3+2+1+0累加结果。...直到n==0时候返回。 6、F5运行程序,打印累加结果15 上面就是关于Python递归函数的相关知识点,感谢大家的阅读和对我们的支持。...(来源 二分查找算法:简单的说,就是将一个数组先排序好,比如按照从小到大的顺序排列好,当给定一个数据,比如target,查找target在数组中的位置时,可以先找到数组中间的数array[middle]...,将它一分为二,直到找到target这个数返回或者数组全部遍历完成(target不在数组中) 优 本文实例讲述了Python实现二分查找算法的方法.分享给大家供大家参考.具体实现方法如下: #!

    3.4K20

    数据结构初步(十)- 二叉树概念与堆的介绍

    所以对于一个给定的数组,其中的元素连续存放,但并不是堆时,我们可以采用插入元素的方法来建堆: 从根节点开始,一开始把数组看做空,接着依次插入数组中的元素到堆中(每次插入都借助向上调整算法),当数组元素插入完时...向下调整建堆的时间复杂度 所以对于一个给定的数组,其中的元素连续存放,但并不是堆时,从数组最后一个元素开始依次进行向下调整,直到遇到根节点结束。...#'表示空树 给出一个字符数组,构建二叉树的函数接受字符数组的首元素的地址、一个下标用于记录函数递归调用时对应的字符在字符数组的具体位置。 分治思想: 分为根和子树的创建、根对子树的链接。...我们需要递归调用完成二叉树的自动创建,实现节点之间的链接,那么记录字符数组的下标将会横跨整个函数递归调用过程,这个下标不能只在某一个递归函数中起作用,而是要在所有递归调用的函数中起作用,为此我们需要下标的地址才行...判断二叉树是否是完全二叉树 借助层序遍历判断是否是完全二叉树,因为递归实现层序遍历不太现实,递归一般都会走向树的深层次,然后再逐级返回,这与层序的依次访问每层的情况不太相符,并且是否是一颗树的情况多种多样

    59410

    算法学习之路 | 快速排序

    思路 给定一个数组,内容都为数字 外层函数 若传入数组只有一个元素,则直接返回当前数组 取数组第一个值为中间值,循环判断其余值与中间值的大小比较 大于中间值存入当前右数组 小于中间值存入当前左数组...递归将循环判断结束得到的左右数组再执行取数组第一个值为中间值,循环判断其余值与中间值的大小比较的操作 由上至下循环分隔数组为左右,最后返回拼接的数组(一个元素时左右拼接上仍为该元素) 由下至上从一个元素的数组开始拼接拼接好左右数组的数组...由下至上结束递归时将两个有序数组拼接 得到一个升序数组 代码 <?.../* quick_sort( quick_sort(quick_sort( ... )) ) 递归就是从外括号到内括号直到不满足条件,再从内括号到外括号执行...最内层将直接返回(只有一个元素) 每次递归内部都有两个递归(左右) 1,2,3

    23630

    PHP常用函数总结

    返回由变量名为键,变量值为值的数组,变量也可以为多维数组.会递归处理 76.array_fill(): 用给定的填充(值生成)数组 $a=array_fill(2,3,”Dog”); print_r(...( string $filename ) 输出: 返回文件上次被修改的时间,出错时返回 FALSE。...feof($file)) { } fclose($file); 调用: bool feof ( resource handle ) 输出: 如果文件指针到了 EOF 或者出错时则返回TRUE,否则返回一个错误...pattern: 要搜索的模式,可以使字符串或一个字符串数组。 callback: 一个回调函数,在每次需要替换时调用,调用时函数得到的参数是从subject 中匹配到的结果。...不忽略 /(php 5.4) JSON_FORCE_OBJECT 使用非关联数组时输出一个对象而不是一个数组(php 5.3) JSON_UNESCAPED_UNICODE 逐字编译多字节字符(php

    3.3K21

    数据结构与算法:递归算法

    当 n = 0 时,我们返回 1。 为什么递归会出现Stack Overflow错误? 如果未达到或未定义基本情况,则可能会出现堆栈溢出问题。让我们举个例子来理解这一点。...如果堆栈上的内存被这些函数耗尽,就会导致堆栈溢出错误。 直接递归和间接递归有什么区别? 如果函数 fun 调用相同的函数 fun,则该函数被称为直接递归。...indirectRecFun1(); // Some code... } 递归中如何为不同的函数调用分配内存? 当从 main() 调用任何函数时,都会在堆栈上为其分配内存。...递归函数调用自身,被调用函数的内存分配在分配给调用函数的内存之上,并且为每个函数调用创建不同的局部变量副本。当达到基本情况时,函数将其值返回给调用它的函数,并且内存被解除分配,并且该过程继续。...让我们通过一个简单的函数来举例说明递归是如何工作的。 PHP <?

    19310

    PHP sizeof() 函数

    实例 返回数组中元素的数目: php $cars=array("Volvo","BMW","Toyota"); echo sizeof($cars); ?...> 定义和用法 sizeof() 函数计算数组中的单元数目或对象中的属性个数。 注释:当变量未被设置,或是变量包含一个空的数组,该函数会返回 0。...规定数组。 mode 可选。规定模式。可能的值:0 - 默认。不计数多维数组中的所有元素。1 - 递归地计数数组中元素的数目(计算多维数组中的所有元素)。 0 - 默认。...不计数多维数组中的所有元素。 1 - 递归地计数数组中元素的数目(计算多维数组中的所有元素)。 技术细节 返回值: 返回数组中元素的数目。...PHP 版本: 4+ 更多实例 例子 1 递归地计算数组中元素的数目: <?

    1.1K10
    领券