与层次值Title和需求标题之间的字符串拼接:如下数组,实现这样一个结果value=10-101-1011,label=wanda-蜘蛛侠-ticketpurchased,其实,它是一个分层值与字符串连接。$example=array(array('value'=>'10','label'=>'Wanda','options'=>array(array('value'=>'101','label'=>'蜘蛛Man','options'=>array(array('value'=>'1011','label'=>'ticketpurchased')),),array('value'=>'102','label'=>'复仇者联盟'),)),array('value'=>'11','label'=>'红星影城','options'=>array(array('value'=>'110','label'=>'速度与激情4'),array('值'=>'111','标签'=>'煎饼侠'),)),);需求:1.Infinitus2.递归方式实现(貌似只能递归方式实现,如果还有其他实现方式,欢迎留言评论)。实现步骤1,循环数组。2.判断当前值是否等于目标值。如果相等,则将值和标签记录在一个新的自增数组中。如果它们不相等,则使用continue跳过循环。3.判断选项是否存在。如果它们不存在,它们将不会被处理。如果存在,则递归调用当前方法,返回options数组,options选择的值(这里默认选择第一个),2中的新数组。4、循环2中得到的新数组,将value和label的值拼接起来并加一个“-”符号,最后用rtrim函数去掉多余的“-”符号。5.完成并返回结果。代码示例publicfunctionrecursion($example,$value,$tmp=array()){//global$tmp;数组递归不返回,所以定义也是可以的foreach($exampleas$k=>$v){if($value==$v['value']){$arr['val']=$v['价值'];$arr['lab']=$v['label'];$tmp[]=$arr;}else{继续;}if($v['options']){return$this->recursion($v['options'],$v['options'][0]['value'],$tmp);}}$val=$lab="";if(!empty($tmp)){foreach($tmpas$v){$val.=$v['val'].'-';$lab.=$v['lab'].'-';}$val=rtrim($val,'-');$lab=rtrim($lab,'-');}returnarray('value'=>$val,'label'=>$lab);}calloutput//call$res=$this->recursion($example,10);print_r($res);die;//outputArray([value]=>10-101-1011[label]=>Wanda-Spiderman-Purchased)总结分析这道题是无限分类实现level之间字符串的拼接。目前只想到用递归的方式实现。所以,不仅递归实现了另一个需求欢迎大家评论。关于实现无限分类、递归和引用的两种方式,可以详细了解:点击链接
