* @param integer $parent [description] * @return [type] [description] */ function familyTree($arr, $parent = 0) { $task = array($parent); //任务表 $tmp = array(); while (!empty($task)) { $flag = false; foreach ($arr as $k => $v) { if ($v['parent'] == $parent) { $tmp[] = $v; unset($arr[$k]); //把找到的单元unsettling掉 $parent = $v['id']; array_push($task, $v['id']); //把最新的地区压入task $flag = true; //说明招到了子栏目 } } if ($flag == false) { array_pop($task); $parent = end($task); } } return $tmp; } print_r(familyTree($area));
/** * 找家谱树 * @param $allClass 需要遍历的数组 * @param $id * @return array */ public function familyTree($allClass, $id) { $familyTree = array(); foreach ($allClass as $v) { if ($v['classid'] == $id) { if ($v['bclassid'] > 0) { // 大于0说明还有父栏目 familyTree($allClass, $v['bclassid']); } $familyTree[] = $v; } } return $familyTree; }