在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
原文:https://blog.csdn.net/csdnzhangyiwei/article/details/60761512。
array array_filter ( array $input [, callback $callback ] ) array array_map ( callback $callback , array $arr1 [, array $... ] ) bool array_walk ( array &$array , callback $funcname [, mixed $userdata ] ) 详细说明: array_filter返回的是一个数组,依次将 input 数组中的每个值传递到 callback 函数。如果 callback 函数返回 TRUE,则 input数组的当前值会被包含在返回的结果数组中。数组的键名保留不变。 $arr=array(1,2,3,4,5,6); function filter($var){ if($var%2==0) return true; } $data=array_filter($arr,"filter"); $data=array(2,4,6);
array_map() 返回一个数组,该数组包含了 arr1 中的所有单元经过 callback 作用过之后的单元。callback接受的参数数目应该和传递给 array_map() 函数的数组数目一致。 $arr1=array('linux','Php','JAVA'); array_map('strtoupper',$arr1);
array_walk() 不会受到 array内部数组指针的影响。array_walk()会遍历整个数组而不管指针的位置。 用户不应在回调函数中改变该数组本身。例如增加/删除单元,unset 单元等等。如果 array_walk()作用的数组改变了,则此函数的的行为未经定义,且不可预期。注意回调函数接收的前两个参数第一个是值,第二个是键值,如果有第三个参数,则数组所有的值都共用这个参数。 function exchange($val,$key) { echo $val; echo $key; } $arr2=array('a'=>'linux','b'=>'php','c'=>'java','d'=>'mysql'); array_walk($arr2,'exchange'); 示例二,将数组里的值变为大写,array_map()才是最佳选择,array_walk()和array_filter()不适合这种场景: //使用array_map()函数 $arr = array('linux','Php','JAVA'); $map_arr = array_map('strtoupper',$arr); var_dump($arr); var_dump($map_arr); //使用array_walk()函数 $walk_arr = []; function FunctionNames($val,$key) { $GLOBALS['walk_arr'][$key] = strtoupper($val); } array_walk($arr,'FunctionNames');//函数返回值为bool true|false var_dump($arr); var_dump($walk_arr); //使用array_filter()函数 $walk_arr =[]; array_filter($arr,'FunctionNames',ARRAY_FILTER_USE_BOTH); var_dump($arr); var_dump($walk_arr); 总结: map的第一个参数是函数,第二个是数组,而walk和filter的第一个参数是数组,第二个才是函数。 map 主要是为了得到你的回调函数处理后的新数组,要的是结果。
|
2022-08-15
2022-08-17
2022-11-06
2022-08-17
2022-07-18
请发表评论