PHP遞歸實(shí)現(xiàn)無限級(jí)分類的代碼示例
什么是無限級(jí)分類?
無限級(jí)分類是一種對(duì)商品或信息進(jìn)行分類的方式,在這種分類方式中,每個(gè)分類都可以再次細(xì)分出更多的子分類,形成無限的級(jí)別
應(yīng)用場(chǎng)景:
一個(gè)電商網(wǎng)站的分類可以是:服裝、鞋類、家居用品等,而服裝分類下又可以進(jìn)一步劃分成男裝、女裝、童裝等子分類,男裝分類下又可以劃分成襯衫、T恤、外套等子分類,這樣就形成了多層次的無限級(jí)分類
在PHP中實(shí)現(xiàn)無限級(jí)分類可以使用遞歸的方法來實(shí)現(xiàn)。下面是一個(gè)簡(jiǎn)單的示例:
<?php
// 模擬分類數(shù)據(jù)
$categories = array(
array('id' => 1, 'name' => '電子產(chǎn)品', 'parent_id' => 0),
array('id' => 2, 'name' => '手機(jī)', 'parent_id' => 1),
array('id' => 3, 'name' => '筆記本電腦', 'parent_id' => 1),
array('id' => 4, 'name' => '家用電器', 'parent_id' => 0),
array('id' => 5, 'name' => '電視', 'parent_id' => 4),
array('id' => 6, 'name' => '冰箱', 'parent_id' => 4),
array('id' => 7, 'name' => '空調(diào)', 'parent_id' => 4),
array('id' => 8, 'name' => '服飾', 'parent_id' => 0),
array('id' => 9, 'name' => '男裝', 'parent_id' => 8),
array('id' => 10, 'name' => '女裝', 'parent_id' => 8),
array('id' => 11, 'name' => '鞋類', 'parent_id' => 0),
array('id' => 12, 'name' => '男鞋', 'parent_id' => 11),
array('id' => 13, 'name' => '女鞋', 'parent_id' => 11),
array('id' => 14, 'name' => '數(shù)碼產(chǎn)品', 'parent_id' => 1),
array('id' => 15, 'name' => '相機(jī)', 'parent_id' => 14),
array('id' => 16, 'name' => '攝像機(jī)', 'parent_id' => 14),
array('id' => 17, 'name' => '辦公用品', 'parent_id' => 0),
array('id' => 18, 'name' => '文具', 'parent_id' => 17),
array('id' => 19, 'name' => '辦公設(shè)備', 'parent_id' => 17),
array('id' => 20, 'name' => '電腦配件', 'parent_id' => 1),
array('id' => 21, 'name' => '顯示器', 'parent_id' => 20),
array('id' => 22, 'name' => '內(nèi)存條', 'parent_id' => 20),
array('id' => 23, 'name' => '游戲機(jī)', 'parent_id' => 1),
array('id' => 24, 'name' => 'PS5', 'parent_id' => 23),
array('id' => 25, 'name' => 'Switch', 'parent_id' => 23),
);
// 遞歸處理分類數(shù)據(jù)
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;
}
// 構(gòu)建樹形結(jié)構(gòu)
$tree = buildTree($categories);
// 顯示分類數(shù)據(jù)
function showTree($tree, $indent = 0) {
foreach ($tree as $category) {
echo str_repeat("--", $indent) . $category['name'] . "<br>";
if (isset($category['children'])) {
showTree($category['children'], $indent + 1);
}
}
}
// 調(diào)用函數(shù)顯示樹形結(jié)構(gòu)
showTree($tree);以上就是PHP遞歸實(shí)現(xiàn)無限級(jí)分類的代碼示例的詳細(xì)內(nèi)容,更多關(guān)于PHP遞歸實(shí)現(xiàn)無限級(jí)分類的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
用php簡(jiǎn)單實(shí)現(xiàn)加減乘除計(jì)算器
加減乘除計(jì)算器想必大家都有使用過吧,本文為大家介紹下使用php如何實(shí)現(xiàn),下面有個(gè)不錯(cuò)的示例,感興趣的朋友可以參考下2014-01-01
關(guān)于WordPress的SEO優(yōu)化相關(guān)的一些PHP頁(yè)面腳本技巧
這篇文章主要介紹了關(guān)于WordPress的SEO優(yōu)化相關(guān)的一些PHP頁(yè)面腳本技巧,包括區(qū)分顯示頁(yè)面標(biāo)題和關(guān)鍵字等,需要的朋友可以參考下2015-12-12
php max_execution_time執(zhí)行時(shí)間問題
大部分PHP代碼執(zhí)行時(shí)間都不會(huì)很久。但是有些時(shí)候,比如等待圖片上傳,可能執(zhí)行時(shí)間過長(zhǎng)導(dǎo)致超時(shí)。2011-07-07
PHP+Ajax實(shí)現(xiàn)的博客文章添加類別功能示例
這篇文章主要介紹了PHP+Ajax實(shí)現(xiàn)的博客文章添加類別功能,結(jié)合實(shí)例形式分析了php+ajax實(shí)現(xiàn)的數(shù)據(jù)交互、數(shù)據(jù)庫(kù)連接、查詢等相關(guān)操作技巧,需要的朋友可以參考下2018-03-03
jQuery+php實(shí)現(xiàn)ajax文件即時(shí)上傳的詳解
本篇文章是對(duì)jQuery+php實(shí)現(xiàn)ajax文件即時(shí)上傳的方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06
/etc/php-fpm.d/www.conf 配置注意事項(xiàng)
下面小編就為大家?guī)硪黄?etc/php-fpm.d/www.conf 配置注意事項(xiàng)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-02-02

