php無限級
㈠ php無限極分類的刪除怎麼判斷有么有子類
function genTree5($items) { foreach ($items as $item) $items[$item['pid']]['son'][$item['id']] = &$items[$item['id']]; return isset($items[0]['son']) ? $items[0]['son'] : array(); }超級爽的函數,格式可能不一樣,但肯定有用
㈡ php如何查找會員無限分類的所有上級和所有下級
這個就要看你的資料庫是怎麼實現的。
我之前給一個人做個一個類似的會員推廣提成的模塊,就a推廣出的a-1,a-2繼續推廣,得到a-1-1,a-1-2等等。
我的資料庫設計思路如下:
用戶表中有一個son這么一個欄位,這個欄位中存放名下所有會員的id,用分號隔開。
這個欄位的維護:
比如a-1-1推廣出了一個a-1-1-1,此新用戶的id是12345,那麼給a-1-1 a-1 a這個三個用戶son欄位內均添加12345這個id,刪除一個用戶做法一樣。
有了這張表就能實現你要的效果。
查一個會員名下所有的會員,只需要讀取該會員的son欄位即可
查一個會員的上級 怎在資料庫中所搜son欄位,含有此會員id的都是他的上級會員。
當然,還有一個欄位是標記此會員的直接上級會員,這樣 一張表就能從任意會員得到整個會員推廣樹。
希望這個思路能幫到你。
㈢ php無限級分類
同一個表中存放父類和子類,但每一條記錄都要有parent_id和category_id,最頂級分類的父id為0,然後第二層分類的父id只要是相應父類的分類id,以此類推。
顯示的時候,先排序,按id就能分出來。
㈣ php 幾種常用的遞歸 無限極分類
/**
*遞歸實現無限極分類
*@param$array分類數據
*@param$pid父ID
*@param$level分類級別
*@return$list分好類的數組直接遍歷即可$level可以用來遍歷縮進
*/
functiongetTree($array,$pid=0,$level=0){
//聲明靜態數組,避免遞歸調用時,多次聲明導致數組覆蓋
static$list=[];foreach($arrayas$key=>$value){//第一次遍歷,找到父節點為根節點的節點也就是pid=0的節點
if($value['pid']==$pid){//父節點為根節點的節點,級別為0,也就是第一級
$value['level']=$level;//把數組放到list中
$list[]=$value;//把這個節點從數組中移除,減少後續遞歸消耗
unset($array[$key]);//開始遞歸,查找父ID為該節點ID的節點,級別則為原級別+1
getTree($array,$value['id'],$level+1);
}
}
㈤ php無限極分類實現的方法
初始化的數據
//初始化原始數據(id=>編號,name=>顯示名稱,pid=>父級目錄id,sort=>排序順序)$data[1]=array('id'=>'1','name'=>'一級目錄A','pid'=>'0','sort'=>'1');
$data[2]=array('id'=>'2','name'=>'一級目錄B','pid'=>'0','sort'=>'2');
$data[3]=array('id'=>'3','name'=>'一級目錄C','pid'=>'0','sort'=>'3');
$data[4]=array('id'=>'4','name'=>'一級目錄D','pid'=>'0','sort'=>'4');
$data[5]=array('id'=>'5','name'=>'二級目錄A-1','pid'=>'1','sort'=>'1');
$data[6]=array('id'=>'6','name'=>'二級目錄A-2','pid'=>'1','sort'=>'2');
$data[7]=array('id'=>'7','name'=>'二級目錄A-3','pid'=>'1','sort'=>'3');
$data[8]=array('id'=>'8','name'=>'二級目錄B-1','pid'=>'2','sort'=>'1');
$data[9]=array('id'=>'9','name'=>'二級目錄B-2','pid'=>'2','sort'=>'2');
$data[10]=array('id'=>'10','name'=>'二級目錄B-3','pid'=>'2','sort'=>'3');
$data[11]=array('id'=>'11','name'=>'二級目錄C-1','pid'=>'3','sort'=>'2');
$data[12]=array('id'=>'12','name'=>'二級目錄D-1','pid'=>'4','sort'=>'1');
$data[13]=array('id'=>'13','name'=>'二級目錄D-2','pid'=>'4','sort'=>'2');
$data[14]=array('id'=>'14','name'=>'三級目錄A-2-1','pid'=>'6','sort'=>'1');
$data[15]=array('id'=>'15','name'=>'三級目錄A-2-2','pid'=>'6','sort'=>'2');
$data[16]=array('id'=>'16','name'=>'三級目錄C-1-1','pid'=>'11','sort'=>'1');
$data[17]=array('id'=>'17','name'=>'三級目錄B-2-1','pid'=>'9','sort'=>'2');
顯示樹結構
functionprintTree($data,$level=0){foreach($dataas$key=>$value){for($i=0;$i<=$level;$i++){echo'  ';
}echo$value['name'];echo'<br>';if(!empty($value['children'])){
printTree($value['children'],$level+1);
}
}
}
使用遞歸的方式獲取無限極分類數組
functiongetNodeTree(&$list,&$tree,$pid=0){foreach($listas$key=>$value){if($pid==$value['pid']){
$tree[$value['id']]=$value;unset($list[$key]);
getNodeTree($list,$tree[$value['id']]['children'],$value['id']);
}
}
}
使用引用-無限極分類
functioncreateNodeTree(&$list,&$tree){foreach($listas$key=>$node){if(isset($list[$node['pid']])){
$list[$node['pid']]['children'][]=&$list[$key];
}else{
$tree[]=&$list[$node['id']];
}
}
}
調用
//遞歸-無限極分類調用getNodeTree($data,$tree);
printTree($tree);//使用引用-無限極分類調用createNodeTree($data,$tree);
printTree($tree);
㈥ php 遞歸問題,想要將數據按照無限極分類的樣式顯示出來
首先 將json 解碼成數組, 用json_decode 函數 注意 一定要加上第二個參數 否則他會返回一個對象。接下來就是地遞歸了。這是一個最簡單的遞歸只要逐個遍歷即可。
下面是完整的代碼:
$data=json_decode($str,true);
$options=getChildren($data);
functiongetChildren($parent,$deep=0){
foreach($parentas$row){
$data[]=array("id"=>$row['id'],"name"=>$row['name'],"pid"=>$row['parentid'],'deep'=>$deep);
if($row['childs']){
$data=array_merge($data,getChildren($row['childs'],$deep+1));
}
}
return$data;
}
?>
<selectname=""id="">
<?phpforeach($optionsas$row){?>
<optionvalue="<?phpecho$row['id']?>"><?phpechostr_pad("",$row['deep']*3,"-",STR_PAD_RIGHT);?><?phpecho$row['name'];?></option>
<?php}?>
</select>
以上代碼已測試通過 效果圖如下
㈦ PHP 無限級分類演算法
我覺得可以用資料庫查找
建臨時表 列為id tab0 tab1 tab2
將數據插入後為 0 1 0 A
1 2 1 b
2 3 2 b
3 4 3 b
用sql數據查找數據就可以了
select * from table where tab0=條件 and tab1=條件 and tab2=條件即可查找所有數據
如果使用foreach遍歷,效率可能要差點
㈧ 關於PHP無限極分類
functiongenTree5($items){
foreach($itemsas$item)
$items[$item['pid']]['son'][$item['id']]=&$items[$item['id']];
returnisset($items[0]['son'])?$items[0]['son']:array();
}
超級爽的函數,格式可能不一樣,但肯定有用,樹狀結構的輸出
㈨ php遞歸循環無限級,求解!
遞歸加入一個符號參數,如"空格",遞歸列表時把符號多連接上一倍,再輸出
<?php
$arr=array(
0=>array(
'name'=>'first',
'_child'=>array(
0=>array(
'name'=>'second',
'_child'=>array(
0=>array(
'name'=>'three',
'_child'=>array()
),
1=>array(
'name'=>'three',
'_child'=>array()
),
2=>array(
'name'=>'three',
'_child'=>array()
),
)
),
1=>array(
'name'=>'second',
'_child'=>array(
0=>array(
'name'=>'three',
'_child'=>array()
),
1=>array(
'name'=>'three',
'_child'=>array()
),
2=>array(
'name'=>'three',
'_child'=>array()
),
)
),
),
)
);
functionechoData($arr,$str){
$str.=' ';
foreach($arras$k=>$v){
echo$str.$v['name'].'<br>';
if(count($v['_child'])){
echoData($v['_child'],$str);
}
}
}
echoData($arr,'');
?>
㈩ php無限級分類ul li如何格式輸出
這個語句:
echo "<ul>";
修改為:
if ($pid) echo "<ul>";
else echo "<ul id=menu>";