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