array_map,array_walk的使用以及區別


$config = [
1 => ['title'=> '推薦','code'=>1],
2 => ['title'=> '搞笑','code'=>1],
3 => ['title'=> '奇聞','code'=>2],
];
數組如上
現在要取出數組里面code為1的內容,結果要下面這樣的
[1=>'推薦',2=>'搞笑']

樓主剛剛使用了一下map以及walk,發現

array_map(function($key) use ($config){
print_r($key);die();
}, $config);

array_walk($config, function($value, $key) use (&$config ){
if($value['project_code'] == 1){
$config[$key] = $value['title'];
}else{
unset($config[$key]);
}
});

使用map的時候,在匿名函數里面是沒有key值的,而walk是同時存在key val兩個值的,
所以這應該是他們最大的區別吧。

所以直接使用map的話,是無法實現上面的需求的,除非再定義一個回掉函數,使用回掉函數來處理,樓主沒有親測,感興趣的可以試試。

現在來說說walk是如何實現的,其實很簡單,在匿名函數里面直接使用外面的config,這里就相當於使用了一次foreach,
array_walk($config, function($value, $key) use (&$config ){
print_r($value);die();
});
得到結果如下
Array
(
    [title] => 推薦
    [code] => 1
)
然后只要判斷等於1的把它拿出來就好了,不是1的就把它給刪除掉
array_walk($config, function($value, $key) use (&$config ){
if($value['code'] == 1){
$config[$key] = $value['title'];
}else{
unset($config[$key]);
}
});

最后就能得到你想要的結果了,而且還不需要定義一個新數組,直接操作原來的數據一步到位
Array
(
    [1] => 推薦
    [2] => 搞笑
)

這里要特別注意的是如果你想直接就把原來的數組改變掉,一定要加 & 字符
不然的話你是操作不了外部數組的。

是不是又對&符號的使用又加深印象了 !!!!





免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM