php Infinitus 분류 간단히 말하면 Windows에서 새 폴더를 만들 수 있는 것처럼 범주를 여러 하위 범주로 나눌 수 있고 하나의 하위 범주를 여러 다른 하위 범주로 무한정 나눌 수 있습니다. 그런 다음 이 폴더에 폴더를 만들 수 있고
무한 분류는 실제로 트리이며 모든 노드가 저장 요소로 사용됩니다. 각 노드에는 여러 개의 하위 노드와 단 하나의 상위 노드만 있을 수 있습니다.
MySQL 데이터 저장과 프로젝트의 데이터 테이블 저장 구조는 다음과 같습니다. (추천 학습:
PHP 프로그래밍 입문부터 숙련까지기술적 구현
글로벌 데이터 스토리지 노드
노드 데이터는 이제 프로젝트의 MySQL에 저장됩니다. 테스트를 위해 MySQL 데이터를 어레이에 직접 저장하고 전역적으로 사용합니다. 데이터는 다음과 같이 저장됩니다:private static $listData = [ [ "Fid" => 1, "Fpid" => 8, "Fname" => '首页', ], [ "Fid" => 2, "Fpid" => 8, "Fname" => '博客', ], [ "Fid" => 3, "Fpid" => 8, "Fname" => '官网', ], [ "Fid" => 4, "Fpid" => 2, "Fname" => '个人博客', ], [ "Fid" => 5, "Fpid" => 2, "Fname" => '他人博客', ], [ "Fid" => 6, "Fpid" => 8, "Fname" => '测试1', ], [ "Fid" => 7, "Fpid" => 8, "Fname" => '测试2', ], [ "Fid" => 8, "Fpid" => 0, "Fname" => '无限极分类', ], [ "Fid" => 9, "Fpid" => 5, "Fname" => '女性栏目', ], [ "Fid" => 10, "Fpid" => 5, "Fname" => '男性栏目', ], ];
무한 분류를 달성하기 위한 참조 방법
아이디어:
#🎜 🎜## 🎜🎜#1 즉, 처리할 모든 데이터를 기본 키 Fid(pk)를 사용하여 배열로 패키징하므로 해당 상위 열을 Fpid로 얻을 수 있습니다.2. 루트 노드인 경우 해당 참조를 트리에 추가합니다. 그렇지 않으면 해당 참조를 상위 클래스의 하위 요소에 추가합니다. 이러한 방식으로 루트 노드만 트리에 추가되더라도 각 루트 노드에 하위 요소가 있는 경우 하위 요소에 대한 참조가 포함됩니다. 그러므로 나무 모양을 이룰 수 있다.
개인적으로 인용된 디자인 아이디어가 재귀적 아이디어보다 이해하기 쉽고 직관적이라고 생각합니다.코드는 다음과 같습니다:
/** * 把返回的数据集转换成Tree * @param array $list 要转换的数据集 * @param string $pk 自增字段(栏目Fid) * @param string $pid parent标记字段 * @return array */ public static function quote_make_tree($list, $pk = 'Fid', $pid = 'Fpid',$child = '_child', $root = 0) { $tree = $packData = []; foreach ($list as $data) { $packData[$data[$pk]] = $data; } foreach ($packData as $key =>$val) { if ($val[$pid] == $root) {//代表跟节点 $tree[] = & $packData[$key]; } else { //找到其父类 $packData[$val[$pid]][$child][] = & $packData[$key]; } } return $tree; }
참조 호출 트리:
/** * 引用生成树 * @return */ public static function quote_tree_test() { $tree = self::make_tree(self::$listData, $pk = 'id', $pid = 'pid', $child = '_child', $root = 0); echo json_encode($tree); }
[
{
"Fid": 8,
"Fpid": 0,
"Fname": "无限极分类",
"_child": [
{
"Fid": 1,
"Fpid": 8,
"Fname": "首页"
},
{
"Fid": 2,
"Fpid": 8,
"Fname": "博客",
"_child": [
{
"Fid": 4,
"Fpid": 2,
"Fname": "个人博客"
},
{
"Fid": 5,
"Fpid": 2,
"Fname": "他人博客",
"_child": [
{
"Fid": 9,
"Fpid": 5,
"Fname": "女性栏目"
},
{
"Fid": 10,
"Fpid": 5,
"Fname": "男性栏目"
}
]
}
]
},
{
"Fid": 3,
"Fpid": 8,
"Fname": "官网"
},
{
"Fid": 6,
"Fpid": 8,
"Fname": "测试1"
},
{
"Fid": 7,
"Fpid": 8,
"Fname": "测试2"
}
]
}
]
위 내용은 PHP Infinitus 분류는 무엇을 의미합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!