php 遍历map数组,php数组遍历函数array_reduce、array_filter、array_walk与array_map的区别...

本文详细介绍了PHP中的四个数组处理函数:array_reduce用于将数组简化为单一值,例如数组求和或字符串拼接;array_filter通过自定义函数筛选数组元素,如过滤偶数;array_map则将回调函数应用到数组每个元素,如将字符串转为整型;而array_walk遍历数组,不返回新数组,但允许在回调函数中修改原数组元素。这些函数在处理数组时提供了极大的灵活性。
摘要由CSDN通过智能技术生成

1. array_reduce( arr , callablecallback )

使用回调函数迭代地将数组简化为单一的值。其中arr 为输入数组,callback(result ,value)接受两个参数,result为上一次迭代产生的值,value是当前迭代的值。

//数组求和

$a = [1,2,3];

$num = array_reduce($a, function($result,$value){

return $result+$value;

})

echo $num;//6

//字符串拼接

$arr = [

['id'=>1,'name'=>"c"],

['id'=>2,'name'=>"b"],

['id'=>3,'name'=>"a"]

];

$str = array_reduce($arr, function($result, $value){

return $result.",".$value['id'];

});

echo $str;//,1,2,3

2.array_filter ( array callback [, int $flag = 0 ]] )

依次将 array 数组中的每个值传递到 callback 函数。如果 callback 函数返回 true,则 array 数组的当前值会被包含在返回的结果数组中。数组的键名保留不变。

array_filter会过滤掉任何值等于FALSE的值,也就是说 0值,空字符串,null,都会被过滤。

==简言之:利用自定义函数对原数组进行筛选==

$newarr2 = array_filter($arr, function($value){

if ($value%2 ==0) return false;

return true;

});

var_dump($newarr2);die;

//输出结果

array(2) {

["a"]=>

int(1)

["c"]=>

int(3)

}

3.array_map(callback arr)

返回用户自定义函数作用后的数组。回调函数接受的参数数目应该和传递给 array_map() 函数的数组数目一致。

向array_map传入数组,出来的还是数组,而不是上面array_reduce()的一个值。所以,array_map()最简单的就是把callback函数作用到每个数组的值上,最常见的场景就是 intval()、trim() 数组中的值.

简言之:有返回值,利用自定义函数对数组的每个元素进行修改

//字符串转为整型

$arr = ['1','2','3'];

array_map('intval', $arr);

4.array_walk()

函数对数组中的每个元素应用用户自定义函数。在函数中,数组的键名和键值是参数。

注释:您可以通过把用户自定义函数中的第一个参数指定为引用:&$value,来改变数组元素的值(参见实例 2)。

简言之:没有返回值。将自定义函数作用于每个数组元素,但不会影响数组。自定义函数的第一个参数传引用则会影响数组

#array_walk 传引用,第三个参数传给回调函数

$arr = [1,2,3,4,5,6];

$a = 2;

//遍历数组arr,闭包函数的第三个参数可以额外传递一个变量

array_walk($arr, function(&$v, $k, $a){

$v = $v + $a;

}, $a);

var_dump($arr);die;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值