一个递归问题

树形结构数组

Array
(
    [0] => Array
        (
            [id] => 1
            [pid] => 0
            [title] => 好运来app
            [description] => 好运来app
            [remark] => 好运来app
            [create_time] => 0
            [update_time] => 1509333357
            [create_user] => aaaa
            [update_user] => gg
            [sort] => 1
            [level] => 1
            [children] => Array
                (
                    [0] => Array
                        (
                            [id] => 9
                            [pid] => 1
                            [title] => 首页
                            [description] => 
                            [remark] => 
                            [create_time] => 1509587738
                            [update_time] => 1509587738
                            [create_user] => gg
                            [update_user] => gg
                            [sort] => 1
                            [level] => 2
                        )

                    [1] => Array
                        (
                            [id] => 3
                            [pid] => 1
                            [title] => 消息
                            [description] => 消息api
                            [remark] => 消息api
                            [create_time] => 1509334756
                            [update_time] => 1509334837
                            [create_user] => gg
                            [update_user] => gg
                            [sort] => 2
                            [level] => 2
                            [children] => Array
                                (
                                    [0] => Array
                                        (
                                            [id] => 5
                                            [pid] => 3
                                            [title] => 活动消息
                                            [description] => 
                                            [remark] => 
                                            [create_time] => 1509334915
                                            [update_time] => 1509334915
                                            [create_user] => gg
                                            [update_user] => gg
                                            [sort] => 1
                                            [level] => 3
                                        )

                                    [1] => Array
                                        (
                                            [id] => 4
                                            [pid] => 3
                                            [title] => 订单消息
                                            [description] => 
                                            [remark] => 
                                            [create_time] => 1509334885
                                            [update_time] => 1509334885
                                            [create_user] => gg
                                            [update_user] => gg
                                            [sort] => 2
                                            [level] => 3
                                        )

                                )

                        )

                    [2] => Array
                        (
                            [id] => 6
                            [pid] => 1
                            [title] => 我的
                            [description] => 
                            [remark] => 
                            [create_time] => 1509585230
                            [update_time] => 1509585248
                            [create_user] => gg
                            [update_user] => gg
                            [sort] => 3
                            [level] => 2
                            [children] => Array
                                (
                                    [0] => Array
                                        (
                                            [id] => 8
                                            [pid] => 6
                                            [title] => 初始化api
                                            [description] => 
                                            [remark] => 
                                            [create_time] => 1509587524
                                            [update_time] => 1509587524
                                            [create_user] => gg
                                            [update_user] => gg
                                            [sort] => 1
                                            [level] => 3
                                        )

                                    [1] => Array
                                        (
                                            [id] => 7
                                            [pid] => 6
                                            [title] => 个人信息
                                            [description] => 
                                            [remark] => 
                                            [create_time] => 1509587495
                                            [update_time] => 1509587495
                                            [create_user] => gg
                                            [update_user] => gg
                                            [sort] => 2
                                            [level] => 3
                                        )

                                )

                        )

                )

        )

)

需求:
如果有children ,往其数组插入url
没有children ,children 的url为'JavaScript';

我的:

  public function test($arr)
    {
        static $result = [];
        foreach ($arr as $key => $value) 
        {
            if(!isset($arr[$key]['children']))
            {   
                $arr[$key]['url'] = 'javascript';
                $result[] = $arr;
            }else{
                $arr[$key]['url'] ='sdfasdfsaf';
                $result[] = $arr;
                $this->test($value['children']);

            }
             
        }
        return $result;
            
    }
阅读 2.1k
3 个回答
function test($arr)
{
    foreach ($arr as $key => $value) 
    {
        if(!isset($value['children'])){   
            $arr[$key]['url'] = 'javascript';
        }else{
            $arr[$key]['url'] = 'sdfasdfsaf';
            $arr[$key]['children'] = test($value['children']);
        }     
    }

    return $arr;
}

可以使用引用的方式,比如test($arr, &$result),可以试试~

/**
 * [getTree 递归方法实现无限极分类]
 * @param  [type]  $list  [需要分类的数据]
 * @param  integer $pid   [子集pid]
 * @param  integer $level [表示层级]
 * @return [type]         [排序完成后的数据]
 */
function getTree($list,$pid=0,$level=0) {
    //保存处理后的数据
    static $tree = array();
    foreach($list as $row) {
        if($row['pid'] == $pid) {
            $row['level'] = $level;
            $tree[] = $row;
            getTree($list, $row['id'], $level + 1);
        }
    }
    return $tree;
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题