1.array_map(对数组的每个元素应用回调函数)$arr=['lanting','nanfeng','xuehua','xiao'];$result=array_map(function($item){returnstrtoupper($item);},$arr);$info=array_keys($data);$data=array_flip($info);$result=array_map(function($item){返回$item+1;},$数据);$arr1=array(1,3,5,7);$arr2=array(2,4,6,8,9);$results=array_map(function($a,$b){返回$a*$b;},$arr1,$arr2);2.array_walk(使用自定义函数对数组中的每个元素进行回调)//array_walk,array_map实现同样的效果$arr=['lanting','nanfeng','雪花','小'];//使用array_map$result=array_map(function($item){returnstrtoupper($item);},$arr);//使用array_walkarray_walk($arr,function(&$item){$item=strtoupper($item);return$item;});array_map和array_walk的区别:1、array_map的第一个参数是callback,array_walk的第二个参数是callback。2.array_map可以处理多个一维数组(多参数),array_walk可以处理多维数组(二维数组)(只有2个参数)。3、array_map有返回值,array_walk使用&直接操作原数组,返回值为bool类型。4、array_map对数组的value进行操作,无需key,而array_walk可以对数组的key和value进行操作。$arr=[1=>['name'=>'lanting',"code"=>100],2=>['name'=>'shanghai',"code"=>200],3=>['姓名'=>'北京',"代码"=>100],];array_walk($arr,function($value,$key)use(&$arr){if($value['code']==100){$arr[$key]=$value['name'];}else{unset($arr[$key]);}});结果:array:2[1=>"lanting"3=>"beijing"]3.array_walk_recursive(递归地对数组中的每个成员应用用户函数)$array=[1=>[2,5=>[4,2],[7,8=>[3,6]],5],4];全局$arr;$arr=[];array_walk_recursive($array,function($k){global$arr;$arr[]=$k;});//$arr=[2,4,2,7,3,6,5,4]4.usort自定义排序//https://www.cnblogs.com/leekale/p/4662736.htmlusort提取值在数组中两两排列,并依次输入到自定义函数中,自定义函数根据内容返回1或-1;usort根据返回值1或-1,得到传入的值1“大于”或“小于”值2,然后计算该值从小到大排序。即:返回值为1,说明值1“大于”值2,然后排序:值2->值1;返回值为-1,表示值1“小于”值2,然后排序:值1->值2。上述自定义函数中,如果$a<$b正确返回1,则表示$a“大于”$b,然后按照$b->$a的顺序进行排序;如果错误返回-1,则表示$a“小于”$b,则按照$a->$b的顺序排序。$arr=[15,646,46,79,19,84,451,27,99];usort($arr,function($str1,$str2){return$str1>$str2?1:-1;//从小到大});//需求:对一个数组先奇后偶,然后从大到小排序。//实现步骤为://1.判断两个输入值是否都是偶数,从大到小排序;//2。如果不是都为偶数,则至少有一个为奇数,先判断$str1是否为偶数?如果是偶数,即:如果($str1%2==0)为真,则返回1,表示$str1“大于”$str2,usort函数排序为“更小”$str2->"大"$str1(偶数);//3。如果$str1为奇数,上面不返回任何值,则判断$str2是否为偶数,如果为偶数,则返回-1,即$str1"小于"$str2,则usort函数排序为“小”$str1(奇数)->“大”$str2(偶数);//4。如果两个值都是奇数,上面不返回任何值,然后将$str1和$str2从大到小排序;$arr=[15,646,46,79,19,84,451,27,99];usort($arr,function($str1,$str2){if($str1%2==0&&$str2%2==0){return$str1<$str2?1:-1;}if($str1%2==0){return1;}if($str2%2==0){return-1;}return$str1<$str2?1:-1;});}//需求:按照法律合规/标准合规排序后,再按照风险级别从高到低排序$dangerLevel=["serious"=>0"high"=>1"middle"=>2"low"=>3“无”=>4];$complyType=["法律"=>0"标准"=>1"差异"=>2];$结果=[["desc"=>"此处省略100个字""complyType"=>"law""dangerType"=>"behaviorLost""dangerLevel"=>"high""suggestion"=>"
此处省略100个字符
""tab"=>"purpose""law"=>null"standard"=>null],["desc"=>"这里省略100个字符""complyType"=>"law""dangerType"=>"systemLost""dangerLevel"=>"middle""suggestion"=>"此处省略100个字符""tab"=>"notice""law"=>null"standard"=>null],["desc"=>"此处省略100个字符""complyType"=>"law""dangerType"=>"behaviorLost""dangerLevel"=>"low""suggestion"=>"省略100个字符这里
""tab"=>"notice""law"=>null"standard"=>null]];usort($result,function($itemA,$itemB)use($dangerLevel,$complyType){$dangerLevelA=$dangerLevel[$itemA['dangerLevel']];$dangerLevelB=$dangerLevel[$itemB['dangerLevel']];$complyTypeA=$complyType[$itemA['complyType']];$complyTypeB=$complyType[$itemB['complyType']];如果($dangerLevelA==$dangerLevelB&&$complyTypeA==$complyTypeB)返回0;返回$dangerLevelA<$dangerLevelB||$complyTypeA<$complyTypeB?-1:1;});5.extractextract()函数将数组中的变量导入到当前符号表中。该函数使用数组键名作为变量名,使用数组键值作为变量值。对于数组中的每个元素,都会在当前符号表中创建一个对应的变量。该函数返回成功设置的变量数。$arr=['lanting'=>'兰亭','nanfeng'=>['name'=>'nanfeng','phone'=>'15252345524'],'name'=>['location'=>'上海']];/***@var$lanting*@var$nanfeng*@var$name*/extract($arr);dd($lanting,$nanfeng,$name);6.array_reduce(带回调函数迭代地将数组缩减为单个值)$arr=[['min'=>1.5456,'max'=>2.28548,'volume'=>23.152],['min'=>1.5457,'max'=>2.28549,'volume'=>23.152],['min'=>1.5458,'max'=>2.28550,'volume'=>23.152],['min'=>1.5459,'max'=>2.28551,'volume'=>23.152],['min'=>1.5460,'max'=>2.28552,'volume'=>23.152],];$initial=array_shift($arr);$result=array_reduce($arr,function($result,$item){$result['min']=min($result['min'],$item['min']);$result['max']=max($result['max'],$item['max']);$result['volume']+=$item['volume'];返回$结果;},$初始);//["min"=>1.5456,"max"=>2.28552,"volume"=>115.76]$arr['foo']=[1,2,3];$arr['bar']=[4,5,6];$result=array_reduce($arr,'array_merge',[]);//[1,2,3,4,5,6]//生成连接字符串$test=['page1','page2','page3'];$result=array_reduce($test,function($html,$page){$html.="