日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

无限极 php算法,无限极分类算法,对你一定有帮助

發布時間:2025/3/15 php 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 无限极 php算法,无限极分类算法,对你一定有帮助 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

無限級分類是開發中常見的情況,也經常會在面試,主考官問到,筆試中遇到,因此本文對常見的無限極分類算法進行總結歸納,其實大多數就是迭代與遞歸。

1.循環迭代實現

$arr = [

1=>['id'=>1,'name'=>'父1','father'=>NULL],

2=>['id'=>2,'name'=>'父2','father'=>NULL],

3=>['id'=>3,'name'=>'父3','father'=>NULL],

4=>['id'=>4,'name'=>'兒1-1','father'=>1],

5=>['id'=>5,'name'=>'兒1-2','father'=>1],

6=>['id'=>6,'name'=>'兒1-3','father'=>1],

7=>['id'=>7,'name'=>'兒2-1','father'=>2],

8=>['id'=>8,'name'=>'兒2-1','father'=>2],

9=>['id'=>9,'name'=>'兒3-1','father'=>3],

10=>['id'=>10,'name'=>'兒3-1-1','father'=>9],

11=>['id'=>11,'name'=>'兒1-1-1','father'=>4],

12=>['id'=>12,'name'=>'兒2-1-1','father'=>7],

];

function generateTree($items){

$tree = array();

foreach($items as $item){

if(isset($items[$item['father']])){

$items[$item['father']]['son'][] = &$items[$item['id']];

}else{

$tree[] = &$items[$item['id']];

}

}

return $tree;

}

$tree = generateTree($arr);

print_r(json_encode($tree));

輸出:

分析:

這個算法利用了循環迭代,將線性結構按照父子關系以樹形結構輸出,算法的關鍵在于使用了引用.

優點:速度快,效率高.

缺點:數組的key值必須與id值相同,不便于取出數據(同樣使用迭代獲取數據)

2.遞歸實現

$arr = [

0=>['id'=>1,'name'=>'父1','father'=>0],

1=>['id'=>2,'name'=>'父2','father'=>0],

2=>['id'=>3,'name'=>'父3','father'=>0],

3=>['id'=>4,'name'=>'兒1-1','father'=>1],

4=>['id'=>5,'name'=>'兒1-2','father'=>1],

5=>['id'=>6,'name'=>'兒1-3','father'=>1],

6=>['id'=>7,'name'=>'兒2-1','father'=>2],

7=>['id'=>8,'name'=>'兒2-1','father'=>2],

8=>['id'=>9,'name'=>'兒3-1','father'=>3],

9=>['id'=>10,'name'=>'兒3-1-1','father'=>9],

10=>['id'=>11,'name'=>'兒1-1-1','father'=>4],

11=>['id'=>12,'name'=>'兒2-1-1','father'=>7],

];

function generateTree($arr,$id,$step){

static $tree=[];

foreach($arr as $key=>$val) {

if($val['father'] == $id) {

$flg = str_repeat('└―',$step);

$val['name'] = $flg.$val['name'];

$tree[] = $val;

generateTree($arr , $val['id'] ,$step+1);

}

}

return $tree;

}

$tree = generateTree($arr,0,0);

foreach ($tree as $val){

echo $val['name'].'
';

}

輸出

分析:

利用了遞歸,數組的key值與id值可以不相同,最后以順序的結構輸出數組

優點:方便遍歷,查找父子元素

缺點:php不擅長遞歸,數據量大的情況下效率會顯著降低

總結

以上是生活随笔為你收集整理的无限极 php算法,无限极分类算法,对你一定有帮助的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。