PHP中递归函数返回值使用介绍(ecshop无限分类)
发布:smiling 来源: PHP粉丝网 添加日期:2014-01-03 10:12:58 浏览: 评论:0
一款以ecshop无限分类为实例来介绍一下php中的递归函数返回值的问题介绍,在 ecshop 二次开发中做产品分类索引时,要根据分类 id 取得所属顶级分类 id,第一个反应就是用递归递出来,于是写了递归函数如下:
- function getCatTopId($cat_id)
- {
- if ($cat_id)
- {
- $res = Array();
- $sql = 'SELECT cat_id, parent_id'
- . ' FROM ' . $GLOBALS['ecs']->table('category')
- . ' WHERE cat_id = ' . $cat_id . ' AND is_show = 1';
- $res = $GLOBALS['db']->getAll($sql);
- if ($res[0]['parent_id'] > 0)
- {
- getCatTopId($res[0]['parent_id']);
- }
- else
- {
- return $res[0]['cat_id'];
- }
- }
- else
- {
- return 1;
- }
- }
一测试程序,没有得到返回值?检查了很久都没有发现错误,看来脑壳断路了,今天问水神(一好心网友)时,他帮我解答出来了,修改如下:
- function getCatTopId($cat_id)
- {
- if ($cat_id)
- {
- $res = Array();
- $sql = 'SELECT cat_id, parent_id'
- . ' FROM ' . $GLOBALS['ecs']->table('category')
- . ' WHERE cat_id = ' . $cat_id . ' AND is_show = 1';
- $res = $GLOBALS['db']->getAll($sql);
- if ($res[0]['parent_id'] > 0)
- {
- return getCatTopId($res[0]['parent_id']); // 修改处,多写个 return ,让函数返回值
- }
- else
- {
- return $res[0]['cat_id'];
- } }
- else
- {
- return 1;
- }
- }
函数写在内部,就算返回了,也只是返回到内部的那个函数的位置,所以外面还有一层主函数,必须再 return 一下
Tags: 递归 函数 返回值
相关文章
- ·ecshop递归过滤get,post函数的程序代码(2015-04-13)
- ·讲一下ecshop里的$_CFG从哪来的(2014-11-18)
- ·ecshop前后台函数库使用笔记(2014-12-05)
- ·ecshop模板常用函数整理总结(2015-12-07)
- ·ecshop getRow getAll getOne 返回值的区别(2014-07-08)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)