关于PHP array_map,array_filter,array_reduce函数

缘由:当开发中需要两层foreach甚至多层(不建议出现多层情况)时候,为了提高代码的可读性,可以使用适当的array相关函数来处理这些问题。

array_map
定义:为数组的每个元素应用回调函数,可以理解为,将数组中的每个元素作为形参,依次运行回调函数,将所处理的值以数组的形式返回。
例子:

$array = array(
	1,2,3,4,5
);

$array2 = array(
	1,2,3,4
);
$result = array_map(function ($a, $b){
	return $a * $b;
}, $array, $array2);

print_r($result);

打印结果:
array(1,4, 9, 16, 0);
为什么最后是0?
因为,遍历两个数组的时候,数量不匹配时候,较小的数组缺失元素将被认为是null。

array_filter:
定义:用回调函数过滤数组中的每个元素,等同于array_map的效果,但是更多时候用于对数组的值进行过滤。返回值的数组中将会对原有的键值和键名进行保留。
例子:

$array = array(
	1,2,3,4,5
);

$result = array_filter($array, function($value) {
	if ($value > 3) {
		return true;
	}
	return false;
});

print_r($result);

结果

Array
(
    [3] => 4
    [4] => 5
)

tip:可以根据ARRAY_FILTER_USE_KEY或者ARRAY_FILTER_USE_BOTH来决定用什么来作为回调函数的参数。

array_reduce:
定义:用回调函数迭代地将数组简化为单一的值,其实可以理解为将不同数组中有关联的数据整合起来。
例子:

$array = array(
	1,2,3,4,5
);

$result = [];

$result = array_reduce($array, function($one, $value){
	$one[] = $value*3;
	return $one;
});

print_r($result);

结果:
Array
(
    [0] => 3
    [1] => 6
    [2] => 9
    [3] => 12
    [4] => 15
)

每次$one都会做为下一次的参数继续使用(可以理解为地址引用)。

这三个函数在不同的场景发挥不同的作用,还有是否对数组进行改变等。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值