這樣乙個無限分類

2021-04-13 22:52:27 字數 3433 閱讀 4308

<?php

class m_label

foreach ($label as $row)

$row_str = substr($row_str, 0, strlen($row_str) - 2) . ')';

$layer_arr = explode('-', $row[$layer_colum]);

$label_str = '$new_label';

foreach ($layer_arr as $layer)

}eval("$label_str=$row_str;");

}return $new_label['child'];

}/**

* 獲取new layer 相當於 mysql_insert_id 的用法

** @param object $mdb

* @param string $table

* @param string $father_layer

* @param string $layer_colum

* @return array

*/function get_new_layer($mdb, $table, $father_layer, $layer_colum = 'layer')

$last_layer = substr($last_layer, 1);

$new_layer = explode('-', $last_layer);

$num = array_pop($new_layer);

$new_layer = implode('-', $new_layer) . '-' . ++$num;

return $new_layer;}}

?>

使用例子

<?php

// 無限分類的例子

// 實際運用中,以下資料一般都是直接從資料庫中提取出來的

$label = array('name' => '遊戲世家', 'layer' => '01');

$label = array('name' => '網路遊戲', 'layer' => '01-01');

$label = array('name' => '卡丁車', 'layer' => '01-01-01');

$label = array('name' => '泡泡堂', 'layer' => '01-01-02');

$label = array('name' => '單機遊戲', 'layer' => '01-02');

$label = array('name' => '生化危機', 'layer' => '01-02-01');

$label = array('name' => '盟軍敢死隊', 'layer' => '01-02-02');

$label = array('name' => '超級瑪麗', 'layer' => '01-02-02');

$label = array('name' => '娛樂休閒', 'layer' => '02');

$label = array('name' => '**之家', 'layer' => '02-01');

$label = array('name' => '周杰倫', 'layer' => '02-01-01');

$label = array('name' => '劉若英', 'layer' => '02-01-02');

$label = array('name' => '書香門第', 'layer' => '02-02');

$label = array('name' => '**', 'layer' => '02-02-01');

$label = array('name' => '長篇**', 'layer' => '02-02-01-01');

$label = array('name' => '短篇**', 'layer' => '02-02-01-02');

$label = array('name' => '雜誌', 'layer' => '02-02-02');

$layeray = m_label::get_label($label);

print_r($layeray);

/**輸出

array

([01] => array

([name] => 遊戲世家

[layer] => 01

[child] => array

([01] => array

([name] => 網路遊戲

[layer] => 01-01

[child] => array

([01] => array

([name] => 卡丁車

[layer] => 01-01-01

)[02] => array

([name] => 泡泡堂

[layer] => 01-01-02))

)[02] => array

([name] => 單機遊戲

[layer] => 01-02

[child] => array

([01] => array

([name] => 生化危機

[layer] => 01-02-01

)[02] => array

([name] => 超級瑪麗

[layer] => 01-02-02))

)))[02] => array

([name] => 娛樂休閒

[layer] => 02

[child] => array

([01] => array

([name] => **之家

[layer] => 02-01

[child] => array

([01] => array

([name] => 周杰倫

[layer] => 02-01-01

)[02] => array

([name] => 劉若英

[layer] => 02-01-02))

)[02] => array

([name] => 書香門第

[layer] => 02-02

[child] => array

([01] => array

([name] => **

[layer] => 02-02-01

[child] => array

([01] => array

([name] => 長篇**

[layer] => 02-02-01-01

)[02] => array

([name] => 短篇**

[layer] => 02-02-01-02))

)[02] => array

([name] => 雜誌

[layer] => 02-02-02))

))))

*/?>

乙個無限分類類

這個是經過本人實踐確實可以使用的。先說下表結構。一共三個欄位iclassid,iparentid,cclassname 乙個是分類的id,乙個是父id,乙個是分類的名字,下面是 class tree this sortasc 設定樹的節點 function setnode id,parent,val...

乙個好用的php 實現無限分類的方法

效果 計算機作業系統 linux 系統 linux相關 linuxpig.com linux.org windows 系統 探險 52risk.com 資料的儲存結構是這樣的 id,pid,name 解釋 id為自身編號,pid為父分類的編號 如果根則為0 name 為分類名稱 無限分類的思想 也就...

乙個無限極分類的類(遞迴的思想)

無限極分類 類 header content type text html charset utf 8 class category return arr 組合多維陣列 static public function unlimitedforlayer cate,name child pid 0 re...