PHP無(wú)限分類的類
<?php
/**
* @author YangHuan
* @datetime
* @version 1.0.0
*/
/**
* Short description.
*
* Detail description
* @author
* @version 1.0
* @copyright
* @access public
*/
class Tree
{
/**
* Description
* @var
* @since 1.0
* @access private
*/
var $data = array();
/**
* Description
* @var
* @since 1.0
* @access private
*/
var $child = array(-1=>array());
/**
* Description
* @var
* @since 1.0
* @access private
*/
var $layer = array(-1=>-1);
/**
* Description
* @var
* @since 1.0
* @access private
*/
var $parent = array();
/**
* Short description.
*
* Detail description
* @param none
* @global none
* @since 1.0
* @access private
* @return void
* @update date time
*/
function Tree ($value)
{
$this->setNode(0, -1, $value);
} // end func
/**
* Short description.
*
* Detail description
* @param none
* @global none
* @since 1.0
* @access private
* @return void
* @update date time
*/
function setNode ($id, $parent, $value)
{
$parent = $parent?$parent:0;
$this->data[$id] = $value;
$this->child[$id] = array();
$this->child[$parent][] = $id;
$this->parent[$id] = $parent;
if (!isset($this->layer[$parent]))
{
$this->layer[$id] = 0;
}
else
{
$this->layer[$id] = $this->layer[$parent] + 1;
}
} // end func
/**
* Short description.
*
* Detail description
* @param none
* @global none
* @since 1.0
* @access private
* @return void
* @update date time
*/
function getList (&$tree, $root= 0)
{
foreach ($this->child[$root] as $key=>$id)
{
$tree[] = $id;
if ($this->child[$id]) $this->getList($tree, $id);
}
} // end func
/**
* Short description.
*
* Detail description
* @param none
* @global none
* @since 1.0
* @access private
* @return void
* @update date time
*/
function getValue ($id)
{
return $this->data[$id];
} // end func
/**
* Short description.
*
* Detail description
* @param none
* @global none
* @since 1.0
* @access private
* @return void
* @update date time
*/
function getLayer ($id, $space = false)
{
return $space?str_repeat($space, $this->layer[$id]):$this->layer[$id];
} // end func
/**
* Short description.
*
* Detail description
* @param none
* @global none
* @since 1.0
* @access private
* @return void
* @update date time
*/
function getParent ($id)
{
return $this->parent[$id];
} // end func
/**
* Short description.
*
* Detail description
* @param none
* @global none
* @since 1.0
* @access private
* @return void
* @update date time
*/
function getParents ($id)
{
while ($this->parent[$id] != -1)
{
$id = $parent[$this->layer[$id]] = $this->parent[$id];
}
ksort($parent);
reset($parent);
return $parent;
} // end func
/**
* Short description.
*
* Detail description
* @param none
* @global none
* @since 1.0
* @access private
* @return void
* @update date time
*/
function getChild ($id)
{
return $this->child[$id];
} // end func
/**
* Short description.
*
* Detail description
* @param none
* @global none
* @since 1.0
* @access private
* @return void
* @update date time
*/
function getChilds ($id = 0)
{
$child = array($id);
$this->getList($child, $id);
return $child;
} // end func
} // end class
?>
使用方法
PHP代碼:
<?php
//new Tree(根目錄的名字);
//根目錄的ID自動(dòng)分配為0
$Tree = new Tree('根目錄');
//setNode(目錄ID,上級(jí)ID,目錄名字);
$Tree->setNode(1, 0, '目錄1');
$Tree->setNode(2, 0, '目錄2');
$Tree->setNode(3, 0, '目錄3');
$Tree->setNode(4, 3, '目錄3.1');
$Tree->setNode(5, 3, '目錄3.2');
$Tree->setNode(6, 3, '目錄3.3');
$Tree->setNode(7, 2, '目錄2.1');
$Tree->setNode(8, 2, '目錄2.2');
$Tree->setNode(9, 2, '目錄2.3');
$Tree->setNode(10, 6, '目錄3.3.1');
$Tree->setNode(11, 6, '目錄3.3.2');
$Tree->setNode(12, 6, '目錄3.3.3');
//getChilds(指定目錄ID);
//取得指定目錄下級(jí)目錄.如果沒(méi)有指定目錄就由根目錄開(kāi)始
$category = $Tree->getChilds();
//遍歷輸出
foreach ($category as $key=>$id)
{
echo $Tree->getLayer($id, '|-').$Tree->getValue($id)."<br>\n";
}
PHP無(wú)限分類-PHP100代碼
<?php
//無(wú)限分類,從子類找所有父類
//$id 子類ID
function php100_xd($id){
$sql="select * from fl where id='$id'";
$q=mysql_query($sql);
$rs=mysql_fetch_array($q);
$rs['fid']==0 ? "" : fl($rs['fid']);
echo $rs['name']."-";
}
//讀取所有父類下面的子類
//$f頂級(jí)分類從什么開(kāi)始,$s樣式
function php100_dx($f=0,$s=""){
$sql="select * from fl where fid=$f";
$q=mysql_query($sql);
$s=$s."-";
while($rs=mysql_fetch_array($q)){
echo "<br>$s".$rs['name'];
flt($rs['id'],$s);
}
}
- thinkphp實(shí)現(xiàn)無(wú)限分類(使用遞歸)
- 解析thinkphp的左右值無(wú)限分類
- PHP+Mysql樹(shù)型結(jié)構(gòu)(無(wú)限分類)數(shù)據(jù)庫(kù)設(shè)計(jì)的2種方式實(shí)例
- PHP 無(wú)限分類三種方式 非函數(shù)的遞歸調(diào)用!
- php遞歸方法實(shí)現(xiàn)無(wú)限分類實(shí)例代碼
- php遞歸實(shí)現(xiàn)無(wú)限分類生成下拉列表的函數(shù)
- 比較簡(jiǎn)單實(shí)用的PHP無(wú)限分類源碼分享(思路不錯(cuò))
- PHP遞歸遍歷多維數(shù)組實(shí)現(xiàn)無(wú)限分類的方法
- PHP實(shí)現(xiàn)的無(wú)限分類類庫(kù)定義與用法示例【基于thinkPHP】
相關(guān)文章
功能齊全的PHP發(fā)送郵件類代碼附詳細(xì)說(shuō)明
PHP--下面這個(gè)類的功能則很強(qiáng)大,不但能發(fā)html格式的郵件,還可以發(fā)附件2008-07-07
詳解php內(nèi)存管理機(jī)制與垃圾回收機(jī)制
在PHP中,沒(méi)有任何變量指向這個(gè)對(duì)象時(shí),這個(gè)對(duì)象就成為垃圾。PHP會(huì)將其在內(nèi)存中銷毀;這是PHP的GC垃圾處理機(jī)制。PHP的內(nèi)存管理,分為倆部分, 第一部分是PHP自身的內(nèi)存管理,而第二部分是zend_alloc中描寫的關(guān)于PHP自身的內(nèi)存管理。本文將詳細(xì)介紹這兩個(gè)內(nèi)容。2021-05-05
php實(shí)現(xiàn)的中秋博餅游戲之?dāng)S骰子并輸出結(jié)果功能詳解
這篇文章主要介紹了php實(shí)現(xiàn)的中秋博餅游戲之?dāng)S骰子并輸出結(jié)果功能,結(jié)合實(shí)例形式分析了php擲骰子的原理及游戲結(jié)果的圖形輸出相關(guān)操作技巧,需要的朋友可以參考下2017-11-11
iis6手工創(chuàng)建網(wǎng)站后無(wú)法運(yùn)行php腳本的解決方法
下面小編就為大家?guī)?lái)一篇iis6手工創(chuàng)建網(wǎng)站后無(wú)法運(yùn)行php腳本的解決方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-06-06
利用Dockerfile文件部署php項(xiàng)目的全過(guò)程
環(huán)境部署一直是一個(gè)很大的問(wèn)題,無(wú)論是開(kāi)發(fā)環(huán)境還是生產(chǎn)環(huán)境,但是Docker將開(kāi)發(fā)環(huán)境和生產(chǎn)環(huán)境以輕量級(jí)方式打包,提供了一致的環(huán)境,下面這篇文章主要給大家介紹了關(guān)于利用Dockerfile文件部署php項(xiàng)目的相關(guān)資料,需要的朋友可以參考下2022-07-07
PHP更新購(gòu)物車數(shù)量(表單部分/PHP處理部分)
購(gòu)物車的數(shù)量是根據(jù)用戶的選擇商品加入而不斷增加的,下面是具體的實(shí)現(xiàn)代碼(客服端部分/PHP服務(wù)器端處理),有類似需求的朋友可以參考下2013-05-05
PHP 二維array轉(zhuǎn)換json的實(shí)例講解
今天小編就為大家分享一篇PHP 二維array轉(zhuǎn)換json的實(shí)例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-08-08
PHP Undefined index報(bào)錯(cuò)的修復(fù)方法
用$_GET["xx"]這種形式取得數(shù)據(jù)時(shí),如果之前不加判斷,$_GET["xx"]不存在時(shí)會(huì)出現(xiàn)這樣的警告:PHP Notice: undefined index xxx。2011-07-07
PHP請(qǐng)求微信接口獲取用戶電話號(hào)功能示例
這篇文章主要介紹了PHP請(qǐng)求微信接口獲取用戶電話號(hào)功能,簡(jiǎn)單講述微信請(qǐng)求接口獲取用戶信息的相關(guān)功能,結(jié)合具體實(shí)例形式分析了php調(diào)用微信請(qǐng)求接口獲取用戶電話號(hào)碼的相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2023-07-07

