>  기사  >  백엔드 개발  >  2차원 배열로부터 N층 분류 트리를 얻는 PHP 구현 방법

2차원 배열로부터 N층 분류 트리를 얻는 PHP 구현 방법

墨辰丷
墨辰丷원래의
2018-06-01 10:02:561434검색

이 글에서는 주로 2차원 배열에서 N층 분류 트리를 얻기 위한 PHP 구현 코드를 소개합니다. 필요한 친구들은 참고하면 됩니다.

회사의 제품 분류는 테이블에 저장되며, mid는 상위 항목을 식별합니다. 후속 작업을 위해서는 계층적 구조 배열을 가져와야 합니다.

생각해 보니 데이터베이스를 반복해서 읽지 않는 방법이나 재귀가 필요하지 않은 연산이 생각나지 않았습니다.

데이터 소스: (데이터는 1차원 키의 id와 해당 값의 2차원 배열이 동일해야 함)

$items = array(
    1 => array('id' => 1, 'pid' => 0, 'name' => '江西省'),
    2 => array('id' => 2, 'pid' => 0, 'name' => '黑龙江省'),
    3 => array('id' => 3, 'pid' => 1, 'name' => '南昌市'),
    4 => array('id' => 4, 'pid' => 2, 'name' => '哈尔滨市'),
    5 => array('id' => 5, 'pid' => 2, 'name' => '鸡西市'),
    6 => array('id' => 6, 'pid' => 4, 'name' => '香坊区'),
    7 => array('id' => 7, 'pid' => 4, 'name' => '南岗区'),
    8 => array('id' => 8, 'pid' => 6, 'name' => '和兴路'),
    9 => array('id' => 9, 'pid' => 7, 'name' => '西大直街'),
    10 => array('id' => 10, 'pid' => 8, 'name' => '东北林业大学'),
    11 => array('id' => 11, 'pid' => 9, 'name' => '哈尔滨工业大学'),
    12 => array('id' => 12, 'pid' => 8, 'name' => '哈尔滨师范大学'),
    13 => array('id' => 13, 'pid' => 1, 'name' => '赣州市'),
    14 => array('id' => 14, 'pid' => 13, 'name' => '赣县'),
    15 => array('id' => 15, 'pid' => 13, 'name' => '于都县'),
    16 => array('id' => 16, 'pid' => 14, 'name' => '茅店镇'),
    17 => array('id' => 17, 'pid' => 14, 'name' => '大田乡'),
    18 => array('id' => 18, 'pid' => 16, 'name' => '义源村'),
    19 => array('id' => 19, 'pid' => 16, 'name' => '上坝村'),
);

트리 생성 기능:

function genTree9($items) {
    $tree = array();
    foreach ($items as $item)
        if (isset($items[$item['pid']]))
            $items[$item['pid']]['son'][] = &$items[$item['id']];
        else
            $tree[] = &$items[$item['id']];
    return $tree;
}

물론이죠. 데이터가 특정 조건을 충족하는 경우 함수는 단 5줄로 줄일 수 있습니다:

function genTree5($items) {
    foreach ($items as $item)
        $items[$item['pid']]['son'][$item['id']] = &$items[$item['id']];
    return isset($items[0]['son']) ? $items[0]['son'] : array();
}

한 번 반복, 메모리 참조. 시간과 공간을 절약하세요.

요약: 위 내용은 이 글의 전체 내용입니다. 모든 분들의 공부에 도움이 되었으면 좋겠습니다.

관련 권장 사항:

phparray_keys는 배열의 키 이름을 반환합니다.

PHP에서 foreach 사용

PHP는 Excel 파일을 MySQL 데이터베이스로 가져옵니다

위 내용은 2차원 배열로부터 N층 분류 트리를 얻는 PHP 구현 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.