您现在的位置是:网站首页 > 心得笔记
php函数作用于数组中的每个值
简介本篇介绍array_map()、array_filter()和array_walk()......
1、array_map(myfunction, array1)将自定义函数作用到数组中的每个值上,并返回用户自定义函数作用后的带有新值的数组。
eg1: function myfunction($v) { return $v * $v; } $array = [1,2,3,4,5]; var_dump(array_map('myfunction', $array));//[1,4,9,16,25] eg2: function myfunction1($v1, $v2) { if ($v1 == $v2) { return 'same'; } return 'different'; } $array1 = ['dog', 'cat', 'milk']; $array2 = ['cow', 'cat', 'rat']; var_dump(array_map('myfunction1', $array1, $array2));//['different', 'smae', 'different'] eg3: function myfunction2($v1, $v2) { if ($v1 == $v2) { return 'same'; } //return 'different'; } $array1 = ['dog', 'cat', 'milk']; $array2 = ['cow', 'cat', 'rat']; var_dump(array_map('myfunction1', $array1, $array2));//[NULL, 'smae', NULL]
参考文档:https://www.w3school.com.cn/php/func_array_map.asp
2、array_filter()该函数把输入数组中的每个键值传给回调函数。如果回调函数返回 true,则把输入数组中的当前键值返回结果数组中。数组键名保持不变。
$arr = ['a','b',1,2,3]; $new_arr = array_filter($arr,function($val){ return is_numeric($val); }); var_dump($new_arr); //返回结果 //array (size=3) // 2 => int 1 // 3 => int 2 // 4 => int 3
3、array_walk(array, myfunction, userdata)对数组中的每个元素应用回调函数。如果成功则返回 TRUE,否则返回 FALSE。典型情况下 myfunction 接受两个参数。array 参数的值作为第一个,键名作为第二个。如果提供了可选参数 userdata ,将被作为第三个参数传递给回调函数。
eg1: function myfunction($v, $k, $p) { echo "$k $p $v"; } $array = ['a' => 'red', 'b' => 'blue', 'c' => 'green']; array_walk($array, 'myfunction', 'has the value'); //a has the value red //b has the value blue //c has the value green dd($array);//['a' => 'red', 'b' => 'blue', 'c' => 'green'] eg2: $array = ['a' => 'red', 'b' => 'blue', 'c' => 'green']; array_walk($array, function(&$v, $k) { if ($v == 'red') { $v = 'yellow'; } }); dd($array);//['a' => 'yellow', 'b' => 'blue', 'c' => 'green']
参考文档:https://www.w3school.com.cn/php/func_array_walk.asp