Example #1
0
 * @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));
Example #2
0
 /**
  * 找家谱树
  * @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;
 }