在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返回。
這兩種方式都可以實現同樣的功能,選擇其一即可。
