时间:2021-07-01 10:21:17 帮助过:13人阅读
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无限分类递归函数返回值详解的详细内容,更多请关注Gxl网其它相关文章!