php 用遞迴實現的無限級別分類
阿新 • • 發佈:2019-01-22
<?php
header("Content-type:text/html; charset=utf-8");
/**
*
* @category contry_category 實現一個無限級別分類,類似種類的劃分,常用在欄目導航
*
*/
/**
+-------------------------------------------------------------------------------+
| id name 類別id |
| 1 中國 0 |
| 2 北京 1 |
| 3 上海 1 |
| 4 美國 0 |
* 5 紐約 4 *
* 6 華盛頓 4 *
* 7 加州福尼亞 4 *
+-------------------------------------------------------------------------------+
*
* 類別id 為0的是頂級欄目
* 類別id 為id相同的是所屬分類
*/
class contry_category{
public $i =-1;
public function index($array){
$this->i++;
if($array[$this->i]['category_id']==0){
echo "├".$array[$this->i]["name"]."<br />";
for($j=0;$j< count($array);$j++){
if($array[$j]['category_id']==$array[$this->i]['id']){ //檢視所屬分類
echo "├─┴".$array[$j]["name"]."<br />";
}
}
}
foreach($array as $v){
if($v['category_id']==0)
$ary[]=$v['category_id']; //獲取幾個頂級欄目,來確定遞迴幾次
}
if($this->i<=count($ary))
$this->index($array); //遞迴
}
}
$infos = array(array("id"=>1,'name'=>"中國","category_id"=>0),array("id"=>2,'name'=>"北京","category_id"=>1),array("id"=>3,'name'=>"上海","category_id"=>1),array("id"=>4,'name'=>"美國","category_id"=>0),array("id"=>5,'name'=>"紐約","category_id"=>4),array("id"=>6,'name'=>"華盛頓","category_id"=>4),array("id"=>7,'name'=>"加州福尼亞","category_id"=>4));
$obj =new contry_category();
$obj->index($infos);
/**
* 打印出來的效果是這樣
* ├中國
├─┴北京
├─┴上海
├美國
├─┴紐約
├─┴華盛頓
├─┴加州福尼亞
header("Content-type:text/html; charset=utf-8");
/**
*
* @category contry_category 實現一個無限級別分類,類似種類的劃分,常用在欄目導航
*
*/
/**
+-------------------------------------------------------------------------------+
| id name 類別id |
| 1 中國 0 |
| 2 北京 1 |
| 3 上海 1 |
| 4 美國 0 |
* 5 紐約 4 *
* 6 華盛頓 4 *
* 7 加州福尼亞 4 *
+-------------------------------------------------------------------------------+
*
* 類別id 為0的是頂級欄目
* 類別id 為id相同的是所屬分類
*/
class contry_category{
public $i =-1;
public function index($array){
$this->i++;
if($array[$this->i]['category_id']==0){
echo "├".$array[$this->i]["name"]."<br />";
for($j=0;$j< count($array);$j++){
if($array[$j]['category_id']==$array[$this->i]['id']){ //檢視所屬分類
echo "├─┴".$array[$j]["name"]."<br />";
}
}
}
foreach($array as $v){
if($v['category_id']==0)
$ary[]=$v['category_id']; //獲取幾個頂級欄目,來確定遞迴幾次
}
if($this->i<=count($ary))
$this->index($array); //遞迴
}
}
$infos = array(array("id"=>1,'name'=>"中國","category_id"=>0),array("id"=>2,'name'=>"北京","category_id"=>1),array("id"=>3,'name'=>"上海","category_id"=>1),array("id"=>4,'name'=>"美國","category_id"=>0),array("id"=>5,'name'=>"紐約","category_id"=>4),array("id"=>6,'name'=>"華盛頓","category_id"=>4),array("id"=>7,'name'=>"加州福尼亞","category_id"=>4));
$obj =new contry_category();
$obj->index($infos);
/**
* 打印出來的效果是這樣
* ├中國
├─┴北京
├─┴上海
├美國
├─┴紐約
├─┴華盛頓
├─┴加州福尼亞