在php中array_map,array_filter,array_walk三個函數都是對數據操作的,下面我來介紹這三個函數的用法與區別。
array_walk:
array_walk()返回布爾值,如果回調函數需要直接作用於數組中的值,則給回調函數的第一個參數指定為引用。這樣任何對這些單元的改變也將會改變原始數組本身。此函數可以同時獲取到數組的key和value。
array_map:
array_map() 返回一個數組,該數組包含了 arr1 中的所有單元經過 callback 作用過之後的單元。callback 接受的參數數目應該和傳遞給 array_map() 函數的數組數目一致。
簡單點說就是回調函數對數組中每個值都會產生最終影響,並在調用array_map的返回值中體現。
此函數可以同時對多個數組進行操作。並最終合並為一個數組(每個數組根據下標平行對其到同一個二維數組中)。
array_filter:
此函數是專門用於過去數組中的元素,簡單點說就是對數組中的經過回調函數判斷的value進行過濾,並通過array_filter()函數返回處理後的數組。
因此分析到此我們可以是喲on個array_walk和array_map來做數組的預處理,最常見的是對每個數組值的trim操作。以下是筆者的示例代碼:
代碼如下 復制代碼
$tmp = array(' AAAA BBBB CCCC ', 'aaaa bbbb c ', ' dddddd eeeeee');
function array_walk_func(&$v, $k) {
$v = trim($v);
}
array_walk($tmp, 'array_walk_func');
var_dump($tmp);
function array_map_func($v) {
return trim($v);
}
$ret = array_map('array_map_func', $tmp);
var_dump($ret);
輸出結果:
array(3) {
[0] =>
string(14) "AAAA BBBB CCCC"
[1] =>
string(11) "aaaa bbbb c"
[2] =>
string(13) "dddddd eeeeee"
}
array(3) {
[0] =>
string(14) "AAAA BBBB CCCC"
[1] =>
string(11) "aaaa bbbb c"
[2] =>
string(13) "dddddd eeeeee"
}