php如何获取foreach+递归返回的数组

felixjing 发布于 2016/09/15 00:24
阅读 769
收藏 0
public static function getchildroles($phone,$name)
    {
        //根据手机号查找第一层子元素
        $children = User::where('tphone',$phone)->get();
        if(!empty($children))
        {
            //获取第一层子元素数量
            $childonenum = array($name => $children->count());
            //循环第一层子元素
            $result = array();
            foreach($children as $child)
            {
                //获得第一层子元素的用户组
                $child_rolename = $child->roles->first()->name;
                //echo $child_rolename;
                //依次存入数组
                $data[] = $child_rolename;
                //获得一层子元素的手机号
                $child_phone = $child->phone;
                $child_name = $child->name;
                $data = array_merge($childonenum, $data);
                //$result = array_merge($result, $data);
                self::getchildroles($child_phone,$child_name);
                print_r($data);
            }
            //$data = array_merge($data, $data);
            //print_r($result);
            return $result;
        }

}

树形结构,查找某个人下面的所有子元素,该如何把每次循环获得的数组合并成一个数组并返回?

加载中
0
m
magiclogy

完全不知道你到底要做成什么样子,建议给个输出的样例。

另外,处理无限分类这种代码性能一般会很糟糕,你可以试试在数据库里建立四层每层超过四个元素,从最顶层一次读取需要消耗多少时间。

如果性能确实很差,就必须使用使用SQL处理。两种数据表的设计对应两种方法,具体参考(后者只适用MySQL)http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/https://explainextended.com/2009/03/17/hierarchical-queries-in-mysql/

felixjing
felixjing
多谢提供思路,我自己试试
0
黄冠能
黄冠能
$result = array_merge($result, self::getchildroles($child_phone,$child_name));
0
inuxor
inuxor
既然是在对象中运行一个方法,完全可以弄个属性来存嘛
返回顶部
顶部