本文目錄一覽:
php遞歸無限極分類怎麼弄
給個函數你,調用get_category()就是一個數組格式的結果
function get_category($parent_id=0){
$arr=array();
$sql = “select * from category where parent_id=$parent_id”;//查詢子級數據
$result = array(a_object,b_object,,,)=sql_query($sql);//查詢結果一個數組或列表格式,自己完善。
if($result){
foreach($result as $re){//循環數組
if(get_category($re.id))//如果子級不為空
$re[‘child’] = get_category($re.id);
$arr[] = $re;
}
return $arr;
}
php無限極分類除了遞歸還有什麼方法
給個函數你,調用get_category()就是一個數組格式的結果
function get_category($parent_id=0){
$arr=array();
$sql = “select * from category where parent_id=$parent_id”;//查詢子級數據
$result = array(a_object,b_object,,,)=sql_query($sql);//查詢結果一個數組或列表格式,自己完善。
if($result){
foreach($result as $re){//循環數組
if(get_category($re.id))//如果子級不為空
$re[‘child’] = get_category($re.id);
$arr[] = $re;
}
return $arr;
}
php 幾種常用的遞歸 無限極分類
/**
* 遞歸實現無限極分類
* @param $array 分類數據
* @param $pid 父ID
* @param $level 分類級別
* @return $list 分好類的數組 直接遍歷即可 $level可以用來遍歷縮進
*/
function getTree($array, $pid =0, $level = 0){
//聲明靜態數組,避免遞歸調用時,多次聲明導致數組覆蓋
static $list = []; foreach ($array as $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′);
顯示樹結構
function printTree($data,$level=0){ foreach($data as $key=$value){ for($i=0;$i=$level;$i++){ echo ’emsp;emsp;’;
} echo $value[‘name’]; echo ‘br’; if(!empty($value[‘children’])){
printTree($value[‘children’],$level+1);
}
}
}
使用遞歸的方式獲取無限極分類數組
function getNodeTree($list,$tree,$pid=0){ foreach($list as $key=$value){ if($pid == $value[‘pid’]){
$tree[$value[‘id’]]=$value; unset($list[$key]);
getNodeTree($list,$tree[$value[‘id’]][‘children’],$value[‘id’]);
}
}
}
使用引用-無限極分類
function createNodeTree($list,$tree){ foreach($list as $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無限極分類
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();
}
超級爽的函數,格式可能不一樣,但肯定有用,樹狀結構的輸出
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/241657.html