本文目錄一覽:
php 無限分類
可以在表A中增加一個欄位,該欄位關聯表B的SID,或者可以新建一張關聯表C (ID,NEWSID,SID) 起到關聯作用
select * from b2b_news as a,b2b_news_sort as b where a.sid= b.sid
是關聯查詢嗎 ,如果有其他條件的話,在後面加and吧
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 MYSQL 請教 2個欄位能無限分類嗎?
沒懂你的CID,和scid 是什麼。
無限分類是無限的樹形結構么?
根據無限樹形結構說一下。一般情況下 是用遞歸調用來處理的。欄位中 用id 和parentid 兩個欄位。 假設有一個函數 fetch是取mysql 數據的。簡單寫一個函數
function getdata($parentid){
$tree=fetch(“parentid = {$parentid}”);
foreach($tree as $k= $v){
$tree[$k][‘children’]=getdata($v[‘id’]);
}
return $tree;
}
調用$tree=getdata(0);
$tree 就是樹形的。
當然 如果有用框架估計更簡單點。比如laravel 。定義一個$tree的模型,表中有id,和parentid兩欄位。模型中新增兩個函數
public function childrentree()
{
return $this-hasMany(get_class($this), ‘parentid’, ‘id’);
}
public function children()
{
return $this-childrentree();
}
然後使用
tree::with([“children”])-where(‘parentid’, 0)-get(); 就可以獲取樹形菜單
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/192465.html