在PHP中,array_walk()
和 array_map()
兩個函數都可以實現對數組中每個值的修改,比如本例就是將數組中所有的值,由UTF-8編碼轉成GBK編碼。
當然,除了這兩個函數,也可以用 foreach
遍歷數組實現,不過,相比於直接用 PHP 的內部函數,顯然效率更低並且不夠優雅。
array_wark()
實現方式如下:
function array2gbk($array) { array_walk($array, function(&$value) { $value = iconv('utf-8', 'gbk', $value); }); return $array; }
array_map()
實現方式如下:
function array2gbk($array) { $array = array_map(function($value){ return iconv('utf-8', 'gbk', $value); }, $array); return $array; }
由此也可以看出這兩個函數的共性和區別:
- 傳入這兩個函數的 $value,就是數組中的單一個元素。
array_walk()
僅返回true
或者false
,array_map()
返回處理后的數組;- 要得到處理后的元素值,
array_walk()
需要在傳入參數值加&
引用符號,array_map()
則需要return
返回。
這兩種方式都可以實現同樣的功能,選擇其一即可。