当前位置: 首页 > 后端技术 > PHP

array_map(关联数组下标获取)等php回调函数的使用问题

时间:2023-03-30 06:17:23 PHP

前言:我使用这种回调函数而不是foreach纯粹是为了代码的简洁,为了让代码看起来更好看。(我有点代码洁癖~)1、array_reduce迭代处理一维索引数组时,回调函数中无法获取到当时的元素索引。所以当你想要获取它的时候,你需要使用一个外部变量。目的:遍历$arr进入标签(即拼接option字符串)$arr=[0=>'all',1=>'a',2=>'b',3=>'c',];解决方案:$index=0;$options=array_reduce($data,function($carry,$item)use(&$index){##$index是当前两个元素的索引$itemreturn$carry.''.$item.'';},'');var_dump($选项);输出是allabc2。array_map(callable$callback,array$array1[,array$...])很多时候,迭代的数据一般是二维关联数组,但是array_map本身是无法在回调函数的函数体中获取到的关联数组的下标。目的:获取回调体中迭代关联数组的下标值。解决方法:可以通过array_map()的第三个形参传递关联数组的下标。$arr=['a'=>1,'b'=>2,'c'=>3];$res=array_map(function($item,$key){echo'$arr['.$key.']='.$item.'
';},$arr,array_keys($arr));输出是$arr[a]=1$arr[b]=2$arr[c]=3顺便说一句,有一个典型的应用程序也可以这样使用。例如,如货物入库。辣条[spec]=>Array(['attr']=>Array([0]=>color[1]=>taste[2]=>sideeffects)['value']=>Array([0]=>Red[1]=>Spicy[2]=>The`chrysanthemum`ishot)))*/##处理规范信息,以便可以批量添加$arr['规格']=array_map(函数($item,$key){return['attr'=>$key,'value'=>$item,];},$arr['spec']['value'],$arr['spec']['attr']);print_r($arr);/*Array([goods]=>辣条[spec]=>Array([0]=>Array([attr]=>color[value]=>red)[1]=>Array([attr]=>taste[value]=>spicy)[2]=>Array([attr]=>sideeffect[value]=>The`chrysanthem`ishot)))*/#这样处理数组非常方便,可以在数组中批量添加`商品规格`的参考资料:laravel框架代码-集合封装->传送门