每日记录5个函数(二)

Crasph彬 112 0

2019/2/27

又回来了,由于种种原因(大概是应为懒,以及晚上码跟着学laravel的案例以及早睡的缘故)……今天接档继续,争取不断……

array_map — 为数组的每个元素应用回调函数
array_filter() - 用回调函数过滤数组中的单元
array_reduce() - 用回调函数迭代地将数组简化为单一的值
array_walk() - 使用用户自定义函数对数组中的每个元素做回调处理
array_map(callable $callback , array $array1 [, array $... ])
//array_map():返回数组,是为 array1 每个元素应用 callback函数之后的数组。
// callback 函数形参的数量和传给 array_map() 数组数量,两者必须一样。
$arr1 = [1,2,3,4,5];
$arr2 = [2,4,6,8,10];
$c = array_map(function($value){
   return $value*10;
 },$arr1); //array(5) { [0]=> int(10) [1]=> int(20) [2]=> int(30) [3]=> int(40) [4]=> int(50) }
 $d = array_map(function($key, $value){
     return $key+$value;
 },$arr1, $arr2); //array(5) { [0]=> int(3) [1]=> int(6) [2]=> int(9) [3]=> int(12) [4]=> int(15) }
 //此函数有个有趣的用法:传入 NULL 作为回调函数的名称,将创建多维数组(一个数组,内部包含数组。)
 $c = array_map(null,$arr1, $arr2);
 //array_filter( array $array [, callable $callback [, int $flag = 0 ]] )
 //依次将 array 数组中的每个值传递到 callback 函数。如果 callback 函数返回 true,
 //则 array 数组的当前值会被包含在返回的结果数组中。数组的键名保留不变。
 //ARRAY_FILTER_BOTH = 1   //都使用
 //ARRAY_FILTER_KEY = 2  //只使用key
 //默认为0,只使用value
 $arr3 = ['false',false,'',1,null,0,'0.0','0'];
 //当不写回调函数时
 array_filter($arr3); //array(3) { [0]=> string(5) "false" [3]=> int(1) [6]=> string(3) "0.0" }
 array_filter($arr1, function($value){
       return $value > 2;
 }); //array(3) { [2]=> int(3) [3]=> int(4) [4]=> int(5) }
 //当代flag时
 array_filter($arr2, function ($value, $key){
         return $value >= 4 && $key > 2;
 }, ARRAY_FILTER_USE_BOTH); // array(2) { [3]=> int(8) [4]=> int(10) }
 //bool array_walk ( array &$array , callable $callback [, mixed $userdata = NULL ] )
 $arr4 = ["d" => "lemon", "a" => "orange", "b" => "banana", "c" => "apple"];
 array_walk($arr4, function (&$value, $key){
     $value = $key .'a';
 });  //array(4) { ["d"]=> string(2) "da" ["a"]=> string(2) "aa" ["b"]=> string(2) "ba" ["c"]=> string(2) "ca" }
 //array_reduce
 //mixed array_reduce ( array $array , callable $callback [, mixed $initial = NULL ] )
 //array_reduce() 将回调函数 callback 迭代地作用到 array 数组中的每一个单元中,从而将数组简化为单一的值。
 function sum($carry, $item)
 {
     $carry += $item;
     return $carry;
 }
 function product($carry, $item)
 {
     $carry *= $item;
     return $carry;
 }
 $a = array(1, 2, 3, 4, 5);
 $x = array();
 var_dump(array_reduce($a, "sum")); // int(15)
 var_dump(array_reduce($a, "product", 10)); // int(1200), because: 10*1*2*3*4*5
 var_dump(array_reduce($x, "sum", "No data to reduce")); // string(17) "No data to reduce"



支付宝打赏
微信打赏
发表评论
crasph 欢迎 Tania35plelp 再次光临! 编辑信息 修改头像
表情 图片 链接 代码

分享
微信
微博
QQ