php 递归实现无限极分类和排序_PHP无限级分类实现层级值间用字符串拼接
生活随笔
收集整理的這篇文章主要介紹了
php 递归实现无限极分类和排序_PHP无限级分类实现层级值间用字符串拼接
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
題目:
如下數(shù)組,實(shí)現(xiàn)這么一個結(jié)果value=10-101-1011,label=萬達(dá)-蜘蛛俠-已購票,其實(shí)就是層級值間用字符串拼接。
需求:
1、無限極。
2、用遞歸的方式實(shí)現(xiàn)(似乎也就只能用遞歸的方式實(shí)現(xiàn),如有其他實(shí)現(xiàn)方式,歡迎留言評論)。
實(shí)現(xiàn)步驟
1、循環(huán)數(shù)組。
2、判斷當(dāng)前value值與目標(biāo)值是否相等,相等時(shí),把value值與label值記錄到新的自增長的數(shù)組里,不等時(shí),用continue跳過循環(huán)。
3、判斷options是否存在,不存在不做處理,存在則遞歸調(diào)用當(dāng)前的方法,把options的數(shù)組,options選中的值(這里默認(rèn)選中第一個),還有2中新的數(shù)組傳回去。
4、把2中得到的新數(shù)組循環(huán),將value和label的值拼接并加上"-"符號,最后把多余的"-"符號用rtrim函數(shù)去除。
5、完成,把結(jié)果返回。
代碼示例
public function recursion($example,$value,$tmp=array()){ // global $tmp; 數(shù)組遞歸不回傳,這么定義也行foreach($example as $k=>$v){if($value==$v['value']){$arr['val']=$v['value'];$arr['lab']=$v['label'];$tmp[]=$arr;}else{continue;}if($v['options']){return $this->recursion($v['options'],$v['options'][0]['value'],$tmp);}}$val=$lab="";if(!empty($tmp)){foreach($tmp as $v){$val.=$v['val'].'-';$lab.=$v['lab'].'-';}$val=rtrim($val,'-');$lab=rtrim($lab,'-');}return array('value'=>$val,'label'=>$lab);}調(diào)用輸出
//調(diào)用 $res=$this->recursion($example,10); print_r($res);die;//輸出 Array ([value] => 10-101-1011[label] => 萬達(dá)-蜘蛛俠-已購票 ) 以上內(nèi)容希望幫助到大家,很多PHPer在進(jìn)階的時(shí)候總會遇到一些問題和瓶頸,業(yè)務(wù)代碼寫多了沒有方向感,不知道該從那里入手去提升,對此我整理了一些資料,包括但不限于:分布式架構(gòu)、高可擴(kuò)展、高性能、高并發(fā)、服務(wù)器性能調(diào)優(yōu)、TP6,laravel,YII2,Redis,Swoole、Swoft、Kafka、Mysql優(yōu)化、shell腳本、Docker、微服務(wù)、Nginx等多個知識點(diǎn)高級進(jìn)階干貨需要的可以免費(fèi)分享給大家,需要請戳這里鏈接 或 者關(guān)注咱們下面的知乎專欄PHP架構(gòu)師圈子?zhuanlan.zhihu.com總結(jié)
以上是生活随笔為你收集整理的php 递归实现无限极分类和排序_PHP无限级分类实现层级值间用字符串拼接的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 手机搭载云服务器_华为云发布“鲲鹏云手机
- 下一篇: 外键查询_传统关系型数据库查询性能提高思