会递归的高手来看一看

浏览:483 发布日期:2014/05/01 分类:求助交流
public function treedata() {
        header ( 'Content-Type: text/html; charset=utf-8' );
        $treedata = M ( 'mod' )->order ( array (
                'pid',
                'sysorder',
                'id' 
        ) )->where ( 'menu=1' )->select ();
        // P($treedata);
        $tree = array ();
        foreach ( $treedata as $row ) {
            
            $obj = new \stdClass ();
            $obj->text = $row ['name'];
            $obj->attr = array (
                    'id' => $row ['id'],
                    'pid' => $row ['pid'],
                    'loadurl' => $row ['loadurl'],
                    'adminurl' => $row ['adminurl'] 
            );
            
            if (! empty ( $row ['loadurl'] )) {
                $obj->children = array ();
            }
            if ($row ['pid'] > 0) {
                $parent = $this->findParent ( $tree, $row ['pid'] );
                if (isset ( $parent->children )) {
                    $parent->children [] = $obj;
                } else {
                    $parent->children = array ();
                    $parent->children [] = $obj;
                }
            } else {
                $tree [] = $obj;
            }
        }
        $this->ajaxReturn ( $tree );
    }
    private function findParent($tree, $key) {
        foreach ( $tree as $obj ) {
            if ($obj->attr ['id'] == $key) {
                return $obj;
            }
            if (isset ( $obj->children )) {
                $parent = $this->findParent ( $obj->children, $key );
                if ($parent)
                    return $parent;
            }
        }
        return null;
    }
这个用递归要怎样改造吖?各位高手;我想要的效果是这样的Array
(
    [0] => stdClass Object
        (
            [text] => 系统助手
            [attr] => Array
                (
                    [id] => 386
                    [pid] => 0
                    [notice] => 
                    [loadurl] => 
                    [adminurl] => 
                )

            [children] => Array
                (
                    [0] => stdClass Object
                        (
                            [text] => 提交反审请求
                            [attr] => Array
                                (
                                    [id] => 476
                                    [pid] => 386
                                    [notice] => 
                                    [loadurl] => 
                                    [adminurl] => system/cancelbill
                                )

                        )

                    [1] => stdClass Object
                        (
                            [text] => 软件问题反馈
                            [attr] => Array
                                (
                                    [id] => 387
                                    [pid] => 386
                                    [notice] => 
                                    [loadurl] => 
                                    [adminurl] => system/bugreport
                                )

                        )
最佳答案
评论() 相关
后面还有条评论,点击查看>>