PHP使用遞迴按層級查詢資料

2021-09-29 12:15:31 字數 1992 閱讀 7091

今天主要介紹一下使用遞迴來按層級查詢資料。

原理挺簡單的,主要是通過父級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...