在php中array_map,array_filter,array_walk三個(gè)函數(shù)都是對(duì)數(shù)據(jù)操作的,下面我來介紹這三個(gè)函數(shù)的用法與區(qū)別.
array_walk:
array_walk()返回布爾值,如果回調(diào)函數(shù)需要直接作用于數(shù)組中的值,則給回調(diào)函數(shù)的第一個(gè)參數(shù)指定為引用。這樣任何對(duì)這些單元的改變也將會(huì)改變?cè)紨?shù)組本身。此函數(shù)可以同時(shí)獲取到數(shù)組的key和value。
array_map:
array_map() 返回一個(gè)數(shù)組,該數(shù)組包含了 arr1 中的所有單元經(jīng)過 callback 作用過之后的單元。callback 接受的參數(shù)數(shù)目應(yīng)該和傳遞給 array_map() 函數(shù)的數(shù)組數(shù)目一致。
簡(jiǎn)單點(diǎn)說就是回調(diào)函數(shù)對(duì)數(shù)組中每個(gè)值都會(huì)產(chǎn)生最終影響,并在調(diào)用array_map的返回值中體現(xiàn)。
此函數(shù)可以同時(shí)對(duì)多個(gè)數(shù)組進(jìn)行操作。并最終合并為一個(gè)數(shù)組(每個(gè)數(shù)組根據(jù)下標(biāo)平行對(duì)其到同一個(gè)二維數(shù)組中)。
array_filter:
此函數(shù)是專門用于過去數(shù)組中的元素,簡(jiǎn)單點(diǎn)說就是對(duì)數(shù)組中的經(jīng)過回調(diào)函數(shù)判斷的value進(jìn)行過濾,并通過array_filter()函數(shù)返回處理后的數(shù)組。
因此分析到此我們可以是喲on個(gè)array_walk和array_map來做數(shù)組的預(yù)處理,最常見的是對(duì)每個(gè)數(shù)組值的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);
- 輸出結(jié)果:
- 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
- }
- ?>
新聞熱點(diǎn)
疑難解答