当然,除了这两个函数,也可以用 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返回。
这两种方式都可以实现同样的功能,选择其一即可。
实例:
- function array2utf($data){
- if(is_array($data)){
- return array_map('array2utf', $data);
- }
- return iconv('gbk', 'utf-8//IGNORE', $data);
- }
文章点评