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

PHP函数(一)

时间:2023-03-30 05:38:33 PHP

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.="$page\n";返回$html;});7.SplFileInfo(获取文件信息)$path=base_path('mydoc.docx');$file=new\SplFileInfo($path);dd(['getATime'=>$file->getATime(),//上次访问时间'getBasename'=>$file->getBasename(),//获取无路径的basename'getCTime'=>$file->getCTime(),//获取inode修改时间'getExtension'=>$file->getExtension(),//文件扩展名'getFilename'=>$file->getFilename(),//获取文件名'getGroup'=>$file->getGroup(),//获取文件组'getInode'=>$file->getInode(),//获取文件inode//'getLinkTarget'=>$file->getLinkTarget(),//获取文件链接目标文件'getMTim??e'=>$file->getMTim??e(),//获取最后修改时间'getOwner'=>$file->getOwner(),//文件所有者'getPath'=>$file->getPath(),//没有文件名的文件路径'getPathInfo'=>$file->getPathInfo(),//父路径的SplFileInfo对象'getPathname'=>$file->getPathname(),//完整路径'getPerms'=>$file->getPerms(),//文件权限'getRealPath'=>$file->getRealPath(),//文件绝对路径'getSize'=>$file->getSize(),//文件大小,单位字节'getType'=>$file->getType(),//文件类型文件目录链接'isDir'=>$file->isDir(),//是否是目录'isFile'=>$file->isFile(),//是否是文件'isLink'=>$file->isLink(),//是否为快捷链接'isExecutable'=>$file->isExecutable(),//是否为可执行'isReadable'=>$file->isReadable(),//是否为可读'isWritable'=>$file->isWritable(),//writable]);8.array_filter$data=[0=>'lanting',1=>false,2=>24,3=>null,4=>'',5=>'0',6=>0,];$result=array_filter($data);//[0=>"兰亭",2=>24]$data=['a'=>45,'1'=>68,'兰亭'=>99,'上海'=>24,'南风'=>12];$result=array_filter($data,function($val){return$val&1;//位运算returnodd["a"=>45,"lanting"=>99]return!($val&1);//位运算返回偶数[1=>68,"上海"=>24,"南丰"=>12]});$data=[Null,False,0,""];//删除所有NULL、FALSE和空字符串,但保留0(零)值$result=array_filter($data,'strlen');//[2=>0]$string="lantingzhagnsanlanfenghaahahah";$array=array_filter(array_map('trim',explode("\n",$string)),'strlen');//[//0=>"lanting",//1=>"zhagnsan",//2=>"lanfeng",//3=>"haahahah"//];9filter_val(过滤器)可以参考:https://blog.csdn.net/shooke/...//验证是否是email格式正确直接返回E-mail字符串,返回false$result=filter_var("localpart.ending.with.dot.@example.com",FILTER_VALIDATE_EMAIL);//false(不支持验证该格式,有更多...)$result=filter_var("768429319.@example.com",FILTER_VALIDATE_EMAIL);//验证url$result=filter_var('http://example.com',FILTER_VALIDATE_URL,FILTER_FLAG_PATH_REQUIRED);//FILTER_FLAG_SCHEME_REQUIRED-要求URL为RFC兼容URL(例如:http://cg.am)//FILTER_FLAG_HOST_REQUIRED–要求URL包含主机名(例如:http://levi.cg.com)//FILTER_FLAG_PATH_REQUIRED–要求URL在主机名(例如:http://levi.cg.am/test/phpmailer/)//FILTER_FLAG_QUERY_REQUIRED–要求URL具有查询字符串(例如:http://levi.cg.am/?p=2618)10.call_user_func官方文档:https://www.php.net/manual/zh/function.call-user-func.phpSimple$data=call_user_func(function($city){return"different".$city;},“上海”);11.get_called_class(获取静态方法调用的类名)