PHP中實作無限級分類
這篇文章介紹的內容是關於PHP中實用無限級分類,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下
在我們工作中,無限級分類應用非常多,其實其思想並不難,無非運用遞歸思想自己調用自己罷了。下面就來看看我寫的無限級分類函數:
header("content-type:text/html;charset=utf-8");//测试数组 $arr=array( array('id'=>2,'name'=>'分类2','parent_id'=>1), array('id'=>9,'name'=>'分类9','parent_id'=>8), array('id'=>1,'name'=>'分类1','parent_id'=>0), array('id'=>7,'name'=>'分类7','parent_id'=>0), array('id'=>3,'name'=>'分类3','parent_id'=>2), array('id'=>4,'name'=>'分类4','parent_id'=>0), array('id'=>6,'name'=>'分类6','parent_id'=>5), array('id'=>8,'name'=>'分类8','parent_id'=>7), array('id'=>5,'name'=>'分类5','parent_id'=>4) );/** * 已知子类id 得到父类树形结构 * @param [type] $data [要查询的数组] * @param [type] $id [子类id] * @param integer $level [缩进系数] * @param boolean $isClear [调用时为true,多次调用不相互叠加] * @return [type] [返回结果树形结构] */function getParent($data,$id,$level=0,$is_Clear=false){ static $_rec = array(); if ($is_Clear == true) { $_rec = array(); } foreach ($data as $k=>$v) { if ( $v['id'] == $id) { $_rec[] =$v; // if ($v['parent_id'] != 0) { getParent($data,$v['parent_id']); // } } } $rec = array_reverse($_rec); for ($i=0; $i $rec[$i]['level']=$level; $level++; } //把自己拿出来,自己不属于父类 array_pop($rec); return $rec; }/** * 已知父类id找 得到子类树形结构 * @param [type] $data [要查询的数组] * @param [type] $id [父类id] * @param integer $level [缩进系数] * @param boolean $isClear [调用时为true,多次调用不相互叠加] * @return [type] [返回结果树形结构] */function getChilds($data,$id,$level=0,$isClear=false){ static $rec = []; if ($isClear == true) { $rec =[]; } foreach ($data as $k => $v) { if ($v['parent_id'] == $id) { $v['level']=$level; $rec[] =$v; getChilds($data,$v['id'],++$level); } } return $rec; }/** * 已知父类id,得到子类id树形结构;区别在于$row[]=$v['id'],只赋值id; * getParent(),可改写成getParentid(); * @param [type] $data [description] * @param [type] $id [description] * @param boolean $col [description] * @return [type] [description] */ function getChildsId($data,$id,$col=false){ static $row=array(); if($col) $row=array(); foreach ($data as $k => $v) { if($v['parent_id'] ==$id){ $row[]=$v['id']; getChildsId($data,$v['id']); } } return $row; }/** * 已知父类id,得到树形结构; * 结合getParent(),若不弹出自己,即已知子类id,得到树形结构 * @param [type] $data [description] * @param [type] $parent_id [description] * @param integer $level [description] * @param boolean $col [description] * @return [type] [description] */function tree($data,$parent_id,$level=0,$col=false){ static $res=array(); if($col) $res=array(); foreach ($data as $k => $v) { if($v['parent_id'] == $parent_id){ $v['level']=$level; $res[]=$v; tree($data,$v['id'],$level+1); } } return $res; }
希望大家留下寶貴的意見,來完善和豐富我的博客,歡迎交流學習。
相關推薦:
以上是PHP中實作無限級分類的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

PHP 8.4 帶來了多項新功能、安全性改進和效能改進,同時棄用和刪除了大量功能。 本指南介紹如何在 Ubuntu、Debian 或其衍生版本上安裝 PHP 8.4 或升級到 PHP 8.4

CakePHP 是 PHP 的開源框架。它旨在使應用程式的開發、部署和維護變得更加容易。 CakePHP 基於類似 MVC 的架構,功能強大且易於掌握。模型、視圖和控制器 gu

Visual Studio Code,也稱為 VS Code,是一個免費的原始碼編輯器 - 或整合開發環境 (IDE) - 可用於所有主要作業系統。 VS Code 擁有大量針對多種程式語言的擴展,可以輕鬆編寫

CakePHP 是一個開源MVC 框架。它使應用程式的開發、部署和維護變得更加容易。 CakePHP 有許多函式庫可以減少大多數常見任務的過載。

本教程演示瞭如何使用PHP有效地處理XML文檔。 XML(可擴展的標記語言)是一種用於人類可讀性和機器解析的多功能文本標記語言。它通常用於數據存儲
