php树菜单转化为一维菜单,php树型菜单 - iturtle的个人空间 - OSCHINA - 中文开源技术交流社区...
通過(guò)處理array,添加level,is_leaf屬性實(shí)現(xiàn) 樹(shù)型菜單
公共類(lèi)
通過(guò)處理array,添加level,is_leaf屬性實(shí)現(xiàn)?樹(shù)型菜單
/*樹(shù)形分類(lèi)添加節(jié)點(diǎn)屬性
*$data,?要處理的節(jié)點(diǎn)數(shù)組
*$pid,父類(lèi)ID
*$prefix,??字段前綴?如chh_pid
*$tree???array()
**/
function?getTree($data,?$pid,$prefix,$tree)?{
foreach($data?as?$k?=>?$v)
{
$v[$prefix.'level']?=?getLevel($data,$pid,1,$prefix);??//為每個(gè)節(jié)點(diǎn)計(jì)算層級(jí)
if(hashChild($data,$v[$prefix.'id'],$prefix)){//判斷每個(gè)節(jié)點(diǎn)是否有子節(jié)點(diǎn)
$v['is_leaf']?=1;
}else{
$v['is_leaf']?=0;
}
if($v[$prefix.'pid']?==?$pid)
{
if(count($tree)==0){
$tree[]?=?$v;
}else{
array_push($tree,?$v);
}
if(!empty($v[$prefix.'id']))
$tmp?=??getTree($data,?$v[$prefix.'id'],$prefix);//遞歸查找子節(jié)點(diǎn)
if(count($tmp)>0){
foreach?($tmp?as?$key?=>?$value)?{
array_push($tree,?$value);
}
}
}
}
return?$tree;
}
/**??判斷是否有子節(jié)點(diǎn)
*$data,?要處理的節(jié)點(diǎn)數(shù)組
*$pid,父類(lèi)ID
*$prefix,??字段前綴?如chh_pid
*/
function?hashChild($data,$id,$prefix)?{
foreach($data?as?$k?=>?$v){
if($v[$prefix.'pid']?==?$id){
return?true;
}
}
return?false;
}
/**??獲取等級(jí)
*$data,?要處理的節(jié)點(diǎn)數(shù)組
*$pid,父類(lèi)ID
*$prefix,??字段前綴?如chh_pid
*/
function?getLevel($data,$id,$level,$prefix)?{
if($level>100)??return?$level;
foreach($data?as?$k?=>?$v){
if($v[$prefix.'id']==$id){
$re?=??$v[$prefix.'pid'];
$level++;
if(!empty($v[$prefix.'pid']))
$level?=getLevel($data,$re,$level);
}
}
return?$level;
}
調(diào)用:
$lst=$Term?->field('term_id,term_name,term_pid')?->order('term_pid?asc?,term_order?asc')->?select();
$lst=?getTree($lst,0,'term_',array());
頁(yè)面處理
selected>
{$v['term_name']}
總結(jié)
以上是生活随笔為你收集整理的php树菜单转化为一维菜单,php树型菜单 - iturtle的个人空间 - OSCHINA - 中文开源技术交流社区...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 参数变化_风机盘管参数变化对性能造成的影
- 下一篇: pyecharts查看版本_pyecha