1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
|
public function tree_data($data, $pid, $deep = 0, $order = 'asc', $flat = false, $level = 0) { $tree = []; $invitat_code = 'invitat_code'; foreach ($data as $k => $row) { if ($order === 'asc') { if (($level > 0 ? $row[$invitat_code] : $row['uid']) == (is_array($pid) ? $pid['code'] : $pid)) { $row['pid'] = !empty($pid['uid']) ? $pid['uid'] : $row['uid']; $row['deep'] = $level; if ($flat) { array_push($tree, $row); if (!empty($row['code']) && $level <= $deep) { $tree = array_merge($tree, $this->tree_data($data, $row, $deep, $order, $flat, $level + 1)); } } else { if ($level <= $deep) { $row['son'] = $this->tree_data($data, $row, $deep, $order, $flat, $level + 1); } $tree[] = $row; } } } else { if (($row['code'] == (is_array($pid) ? $pid[$invitat_code] : $pid))) { $row['sid'] = !empty($pid['uid']) ? $pid['uid'] : $row['uid']; $row['deep'] = $level; if ($flat) { array_push($tree, $row); if (!empty($row[$invitat_code]) && ($level <= $deep || empty($deep))) { $tree = array_merge($tree, $this->tree_data($data, $row, $deep, $order, $flat, $level + 1)); } } else { if ($level <= $deep || empty($deep)) { $row['son'] = !empty($row[$invitat_code]) ? $this->tree_data($data, $row, $deep, $order, $flat, $level + 1) : []; } $tree[] = $row; } } } } return $tree; }
|