php自定义函数遇到个问题,求教

靐鑫森淼焱垚 发布于 2016/06/23 22:17
阅读 218
收藏 0
PHP
function categorynav($cat_id)
{
    global $database;
    global $catnav;
    $cat = $database->get('ecs_category','*',array('cat_id'=>$cat_id));
    array_unshift($catnav,$cat['cat_name']);
    
    if($cat['parent_id']>0){
        categorynav($cat['parent_id']);
    }else{
        return implode('>',$catnav);
    }
}
echo categorynav($goods['cat_id']);

无法输出结果,但是把return改成echo,然后下面直接categorynav($goods['cat_id']);就能正常输出结果,这是为什么呢?

加载中
0
大止刀口
大止刀口

因为

echo categorynav($goods['cat_id']);

的时候categorynav 在递归的第一层就返回了NULL

错误出在你的递归函数categorynav “不是每条逻辑分路都有return"

这种函数放在强类型语言里直接就会报错的。

0
大止刀口
大止刀口

    if($cat['parent_id']>0){
        return categorynav($cat['parent_id']);//这一句加个return
    }else{
        return implode('>',$catnav);
    }

加上return应该就可以了,不过这样用全局变量和递归,感觉很不好。

返回顶部
顶部