使用PHP遞歸實現無限級分類的步驟如下:
創建一個數組或從數據庫中獲取分類數據,包含id和parent_id字段,表示分類的唯一標識和父級分類的標識。
創建一個遞歸函數,接受兩個參數:分類數據和父級分類的id。
在遞歸函數中,遍歷分類數據,找到父級分類id等于當前傳入的父級id的分類。
在遍歷過程中,將找到的分類添加到一個新的數組中,并調用遞歸函數傳入當前找到的分類id作為父級id。
遞歸函數將會一直執行直到找不到符合條件的分類,然后返回最終的分類數組。
下面是一個示例代碼:
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;
}
// 示例數據
$categories = array(
array('id' => 1, 'parent_id' => 0, 'name' => '分類1'),
array('id' => 2, 'parent_id' => 0, 'name' => '分類2'),
array('id' => 3, 'parent_id' => 1, 'name' => '分類1-1'),
array('id' => 4, 'parent_id' => 1, 'name' => '分類1-2'),
array('id' => 5, 'parent_id' => 3, 'name' => '分類1-1-1'),
array('id' => 6, 'parent_id' => 2, 'name' => '分類2-1'),
array('id' => 7, 'parent_id' => 0, 'name' => '分類3'),
);
$result = buildTree($categories);
print_r($result);
運行以上代碼將輸出遞歸生成的分類樹形結構數組。