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);
经验分享 程序员 微信小程序 职场和发展