array_map 和 array_walk的使用
需求:获取数组中code为1的title 有一个数组:
$config = [
1 => [title=> 推荐,code=>1],
2 => [title=> 搞笑,code=>1],
3 => [title=> 奇闻,code=>2],
];
使用array_walk的实现方案为:
array_walk($config, function($value, $key) use (&$config ){
if($value[code] == 1){
$config[$key] = $value[title];
}else{
unset($config[$key]);
}
});
最后就能得到你想要的结果了,而且还不需要定义一个新数组,直接操作原来的数据一步到位
Array ( [1] => 推荐 [2] => 搞笑 )
使用array_map的实现方案为:
array_map(function($key) use ($config){
print_r($key);die();
}, $config);
发现直接使用array_map是无法实现的 ,因为array_map的function中没有$key,如果要实现,还要再写其他回调
所以 array_map 和 array_walk的区别在于有无key的存在,其他都差不多
举个例子: 需求:从某二维数组中,抽取部分key组成一个新数组 方案如下
$returnData = [];
array_walk($userImages, function(&$value) use (&$returnData){
$image = [
id => $value[id],
name => $value[name],
img => $value[img],
price => $value[price],
created_at => date(Y-m-d H:i:s, $value[created_at])
];
array_push($returnData, $image);
});
return $returnData;
$returnData = [];
array_map(function($value) use (&$returnData){
$image = [
id => $value[id],
name => $value[name],
img => $value[img],
price => $value[price],
created_at => date(Y-m-d H:i:s, $value[created_at])
];
array_push($returnData, $image);
}, $userImages);
