> 백엔드 개발 > PHP 문제 > PHP에서 무한 범주형 데이터를 배열 형식으로 변환하는 방법

PHP에서 무한 범주형 데이터를 배열 형식으로 변환하는 방법

PHPz
풀어 주다: 2023-04-18 15:48:24
원래의
528명이 탐색했습니다.

PHP로 개발하는 과정에서 무제한 분류는 일반적이고 중요한 요구 사항입니다. 사용 및 조작의 편의를 위해 일반적으로 무한 범주를 배열 형식으로 변환합니다. 무한한 범주형 데이터를 배열 형태로 변환하는 방법은 다음과 같습니다.

  1. 무한 범주형 데이터 형식 정의

시작하기 전에 무한 범주형 데이터 형식을 설정해야 합니다. 일반적으로 기본 무한 분류 데이터 형식은 다음 필드로 구성됩니다.

  • id: 고유 식별자, 일반적으로 자동 증가 ID입니다.
  • name: 카테고리 이름입니다.
  • pid: 상위 분류 ID, 1차 분류인 경우 0입니다.
  • level: 분류 수준, 첫 번째 수준 분류인 경우 1입니다.

예를 들어 간단한 무한 범주형 데이터는 다음과 같습니다.

[
    ['id' => 1, 'name' => '电子产品', 'pid' => 0, 'level' => 1],
    ['id' => 2, 'name' => '手机', 'pid' => 1, 'level' => 2],
    ['id' => 3, 'name' => '电脑', 'pid' => 1, 'level' => 2],
    ['id' => 4, 'name' => '智能手机', 'pid' => 2, 'level' => 3],
    ['id' => 5, 'name' => '笔记本电脑', 'pid' => 3, 'level' => 3],
]
로그인 후 복사
  1. 변환 함수 정의

무한 범주형 데이터를 배열 형식으로 변환하는 재귀 함수를 정의할 수 있습니다. 이 함수의 코드는 다음과 같습니다.

function categoryToTree($source, $parentId = 0) {   
    $result = [];
   
    foreach ($source as $key => $value) {
        if ($value['pid'] == $parentId) {       
            unset($source[$key]);          
            $children = categoryToTree($source, $value['id']);     
            if (!empty($children)) {
                $value['children'] = $children;
            }
            $result[] = $value;         
        }
    }
   
    return $result;
}
로그인 후 복사

무한 분류 변환을 위해 재귀를 사용합니다. 구체적으로, 각 카테고리 데이터에 대해 먼저 현재 카테고리의 하위 카테고리인지 확인합니다. 그렇다면 이를 결과 배열에 추가하고 해당 하위 카테고리를 재귀적으로 처리합니다. 그렇지 않으면 카테고리를 건너뛰고 다음 카테고리 데이터를 직접 처리합니다.

하위 카테고리를 재귀적으로 처리할 때 배열에서 $source 数组传入。为了保证每个分类只被处理一次,我们需要将已经处理过的分类数据从 $source가 삭제된다는 점에 유의하세요.

  1. 변환 수행

위에 정의된 변환 함수를 사용하면 무한한 범주형 데이터를 배열 형태로 변환할 수 있습니다. 예를 들어 다음 코드를 실행합니다.

$data = [
    ['id' => 1, 'name' => '电子产品', 'pid' => 0, 'level' => 1],
    ['id' => 2, 'name' => '手机', 'pid' => 1, 'level' => 2],
    ['id' => 3, 'name' => '电脑', 'pid' => 1, 'level' => 2],
    ['id' => 4, 'name' => '智能手机', 'pid' => 2, 'level' => 3],
    ['id' => 5, 'name' => '笔记本电脑', 'pid' => 3, 'level' => 3],
];

$result = categoryToTree($data);

print_r($result);
로그인 후 복사

출력은 다음과 같습니다.

Array
(
    [0] => Array
        (
            [id] => 1
            [name] => 电子产品
            [pid] => 0
            [level] => 1
            [children] => Array
                (
                    [0] => Array
                        (
                            [id] => 2
                            [name] => 手机
                            [pid] => 1
                            [level] => 2
                            [children] => Array
                                (
                                    [0] => Array
                                        (
                                            [id] => 4
                                            [name] => 智能手机
                                            [pid] => 2
                                            [level] => 3
                                        )
   
                                )
   
                        )
   
                    [1] => Array
                        (
                            [id] => 3
                            [name] => 电脑
                            [pid] => 1
                            [level] => 2
                            [children] => Array
                                (
                                    [0] => Array
                                        (
                                            [id] => 5
                                            [name] => 笔记本电脑
                                            [pid] => 3
                                            [level] => 3
                                        )
   
                                )
   
                        )
   
                )
   
        )
   
)
로그인 후 복사

보시다시피 무한한 카테고리 데이터를 배열 형식으로 변환했으며 각 카테고리에는 하위 카테고리가 포함되어 있습니다. 이러한 방식으로 배열 함수를 사용하여 무한한 범주형 데이터를 쉽게 처리할 수 있습니다.

위 내용은 PHP에서 무한 범주형 데이터를 배열 형식으로 변환하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿