900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > php 递归实现无限极分类和排序_PHP无限级分类实现层级值间用字符串拼接

php 递归实现无限极分类和排序_PHP无限级分类实现层级值间用字符串拼接

时间:2021-10-20 17:33:42

相关推荐

php 递归实现无限极分类和排序_PHP无限级分类实现层级值间用字符串拼接

题目:

如下数组,实现这么一个结果value=10-101-1011,label=万达-蜘蛛侠-已购票,其实就是层级值间用字符串拼接。

$example=array(array('value'=>'10','label'=>'万达','options'=>array(array('value'=>'101','label'=>'蜘蛛侠','options'=>array(array('value'=>'1011','label'=>'已购票')),),array('value'=>'102','label'=>'复仇者联盟'),)),array('value'=>'11','label'=>'红星影城','options'=>array(array('value'=>'110','label'=>'速度与激情4'),array('value'=>'111','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架构师圈子​

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。