怎么使用php遞歸實(shí)現(xiàn)無(wú)限級(jí)分類(lèi)

PHP
小億
94
2023-09-29 06:04:29

使用PHP遞歸實(shí)現(xiàn)無(wú)限級(jí)分類(lèi)的步驟如下:

  1. 創(chuàng)建一個(gè)數(shù)組或從數(shù)據(jù)庫(kù)中獲取分類(lèi)數(shù)據(jù),包含id和parent_id字段,表示分類(lèi)的唯一標(biāo)識(shí)和父級(jí)分類(lèi)的標(biāo)識(shí)。

  2. 創(chuàng)建一個(gè)遞歸函數(shù),接受兩個(gè)參數(shù):分類(lèi)數(shù)據(jù)和父級(jí)分類(lèi)的id。

  3. 在遞歸函數(shù)中,遍歷分類(lèi)數(shù)據(jù),找到父級(jí)分類(lèi)id等于當(dāng)前傳入的父級(jí)id的分類(lèi)。

  4. 在遍歷過(guò)程中,將找到的分類(lèi)添加到一個(gè)新的數(shù)組中,并調(diào)用遞歸函數(shù)傳入當(dāng)前找到的分類(lèi)id作為父級(jí)id。

  5. 遞歸函數(shù)將會(huì)一直執(zhí)行直到找不到符合條件的分類(lèi),然后返回最終的分類(lèi)數(shù)組。

下面是一個(gè)示例代碼:

function buildTree($categories, $parent_id = 0) {
$tree = array();
foreach ($categories as $category) {
if ($category['parent_id'] == $parent_id) {
$children = buildTree($categories, $category['id']);
if ($children) {
$category['children'] = $children;
}
$tree[] = $category;
}
}
return $tree;
}
// 示例數(shù)據(jù)
$categories = array(
array('id' => 1, 'parent_id' => 0, 'name' => '分類(lèi)1'),
array('id' => 2, 'parent_id' => 0, 'name' => '分類(lèi)2'),
array('id' => 3, 'parent_id' => 1, 'name' => '分類(lèi)1-1'),
array('id' => 4, 'parent_id' => 1, 'name' => '分類(lèi)1-2'),
array('id' => 5, 'parent_id' => 3, 'name' => '分類(lèi)1-1-1'),
array('id' => 6, 'parent_id' => 2, 'name' => '分類(lèi)2-1'),
array('id' => 7, 'parent_id' => 0, 'name' => '分類(lèi)3'),
);
$result = buildTree($categories);
print_r($result);

運(yùn)行以上代碼將輸出遞歸生成的分類(lèi)樹(shù)形結(jié)構(gòu)數(shù)組。

0