今天主要介紹一下使用遞迴來按層級查詢資料。
原理挺簡單的,主要是通過父級id一級一級的迴圈查詢子級,使用php迴圈**也很容易實現,不過如果層級越多,php重複**也越多,這時可以使用遞迴來實現這功能。
1、首先查出要使用的資料組成乙個陣列(避免遞迴裡查詢資料庫,之後根據這個陣列組成自己需要的資料就可以了)
比如得到如下資料:
$data=[
['id'
=>
'1',
'pid'
=>
'0',
'dsp'
=>
'1'],[
'id'
=>
'2',
'pid'
=>
'0',
'dsp'
=>
'2'],[
'id'
=>
'3',
'pid'
=>
'0',
'dsp'
=>
'3'],[
'id'
=>
'4',
'pid'
=>
'1',
'dsp'
=>
'1-4'],
['id'
=>
'5',
'pid'
=>
'4',
'dsp'
=>
'1-4-5'],
['id'
=>
'6',
'pid'
=>
'5',
'dsp'
=>
'1-4-5-6'],
['id'
=>
'7',
'pid'
=>
'3',
'dsp'
=>
'3-7'],
['id'
=>
'8',
'pid'
=>
'2',
'dsp'
=>
'2-8'],
['id'
=>
'9',
'pid'
=>
'1',
'dsp'
=>
'1-9'],
['id'
=>
'10'
,'pid'
=>
'4',
'dsp'
=>
'1-4-10'],
];
2、接下來使用遞迴重組資料,使資料按層級顯示。
/**
* 根據父級id查詢子級資料
* @param $data 要查詢的資料
* @param int $pid 父級id
*/public
function
recursion
($data
,$pid=0
)}return
$child
;}
得到結果:
[,,
,,,,
,,,]
3、還可以使用下面的方法,顯示更有層次感。
/**
* 根據父級id查詢子級資料
* @param $data 要查詢的資料
* @param int $pid 父級id
*/public
function
recursion
($data
,$pid=0
)}return
$child
;}
得到結果:
}
,]},
]},]
},]}
]
PHP使用遞迴按層級查詢資料的方法
今天主要介紹一下使用遞迴來按層級查詢資料。原理挺簡單的,主要是通過父級id一級一級的迴圈查詢子程式設計客棧級,使用php迴圈 也很容易實現,不過如果層級越多,php重複 也越多,這時可以使用遞迴來實現這功能。1 首先查出要使用的資料組成乙個陣列 避免遞迴裡查詢資料庫,之後根據這個陣列組成自己需要的資...
oracle遞迴查詢(層級查詢)
select from table t start with t.id id connect by prior t.id t.parentid 從對應id開始查,包括本節點和所以子節點 select from table t start with t.parentid pareanid connec...
遞迴實現層級查詢選單
在層級查詢選單時意見有所分歧,想法有兩種一種是動態查詢,但是會增加伺服器的壓力,另一種方法是全部返回的資料,由前端去控制展示效果。層級查詢樹狀選單,想到使用遞迴去做遍歷查詢,在此記錄一下 實體類和到層就不再生成 核心 是service層的邏輯處理主要包括兩部分內容 層級獲取選單 public lis...