在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操作。以下是筆者的示例代碼:
- <?php
- $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"
- //開源代碼Vevb.com
- }
- ?>
新聞熱點
疑難解答