$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] => 搞笑
)
這里要特別注意的是如果你想直接就把原來的數組改變掉,一定要加 & 字符
不然的話你是操作不了外部數組的。
是不是又對&符號的使用又加深印象了 !!!!