接口写的多了之后就越来越觉得foreach真的太low了
作用
array_map() 函数将用户自定义函数作用到数组中的每个值上,并返回用户自定义函数作用后的带有新值的数组。
回调函数接受的参数数目应该和传递给 array_map() 函数的数组数目一致
参数
举个例子:
1.拿到数据库的数据后是一个二维数据,想处理成一维数组
array(3) { [0]=> array(1) { ["img_url"]=> string(22) "202007221714493356.png" } [1]=> array(1) { ["img_url"]=> string(22) "202007221717268774.jpg" } [2]=> array(1) { ["img_url"]=> string(22) "202007221717364389.jpg" } }
现在我想要处理成
array(3) { [0]=> string(22) "202007221714493356.png" [1]=> string(22) "202007221717268774.jpg" [2]=> string(22) "202007221717364389.jpg" }
直接用array_map('array_shift',$data);
就行
2.加工原有数据
那如果需要对原有数据进行再加工 还可以使用闭包
self = $this;
$result = array_map(function($item) use($self){
$img = $self->getImg();
return array(
'参数1' => $item['id'],
'参数2' => $item['id1']
);
},$data);
php还有很多类似的函数array_walk_recursive(),array_walk(),array_filter().等