您好,欢迎访问一九零五行业门户网

ecshop无限分类递归函数返回值详解

在 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 一下
以上就是ecshop无限分类递归函数返回值详解的详细内容。
其它类似信息

推荐信息