class Tree { /** * 数据递归 * @param $data * @param int $id * @param int $level * @param array * @return array * @date 2018.10.24 15:40:34 */ public static function recursion($data, $id = 0, $level = 1) { $return = []; foreach ($data as $val) { if ($val['pid'] == $id) { $val['level'] = $level; $return[] = $val; $return = array_merge($return, static::recursion($data, $val['id'], $level + 1)); } } return $return; } /** * 子节点的上级节点 * @param array $data * @param int $pid * @param array $result 临时结果 * @return array * @date 2018.10.24 15:45:44 */ public static function family($data, $pid, $result = []) { foreach ($data as $val) { if ($val['id'] == $pid) { $result[] = $val; return static::family($data, $val['pid'], $result); } } return $result; } /** * 查询分类的子类 * @param array $data * @param int $id * @return array * @date 2018.10.24 16:44:18 */ public static function findSon($data, $id = 0) { $sons = []; foreach ($data as $val) { if ($val['pid'] == $id) { $sons[] = $val; } } return $sons; } /** * 家谱树 * @param $data * @param $id * @return array * @date 2018.10.24 16:18:38 */ public static function familyTree($data, $id = 0) { $data = static::recursion($data, $id); return static::subtrees($data); } /** * 无限级嵌套树 * @param $data * @param int $level * @param int $id * @return array * @date 2018.10.25 10:59:16 */ public static function subtrees($data, $level = 1, $id = 0) { $ret = []; foreach ($data as $key => $val) { if ($val['level']==$level && $val['pid']==$id) { $data[$key]['children'] = static::subtrees($data, $level+1, $val['id']); if (empty($data[$key]['children'])) { unset($data[$key]['children']); } $ret[] = $data[$key]; } } return $ret; } }
树形数据操作
猜你喜欢
转载自www.cnblogs.com/2019PawN/p/11717433.html
今日推荐
周排行