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; } <p> } </p>
树形结构,查找某个人下面的所有子元素,该如何把每次循环获得的数组合并成一个数组并返回?
完全不知道你到底要做成什么样子,建议给个输出的样例。
另外,处理无限分类这种代码性能一般会很糟糕,你可以试试在数据库里建立四层每层超过四个元素,从最顶层一次读取需要消耗多少时间。
如果性能确实很差,就必须使用使用SQL处理。两种数据表的设计对应两种方法