PHP的array_walk和array_map函数实现数组值UTF-8转GBK编码
在PHP中,array_walk()和array_map()两个函数都可以实现对数组中每个值的修改,比如本例就是将数组中所有的值,由UTF-8编码转成GBK编码。
当然,除了这两个函数,也可以用foreach 遍历数组实现,不过,相比于直接用PHP的内部函数,显然效率更低并且不够优雅。
array_wark()实现方式如下:
functionarray2gbk($array) { array_walk($array,function(&$value){ $value=iconv('utf-8','gbk',$value); }); return$array; }
array_map()实现方式如下:
functionarray2gbk($array) { $array=array_map(function($value){ returniconv('utf-8','gbk',$value); },$array); return$array; }
由此也可以看出这两个函数的共性和区别:
- 传入这两个函数的$value,就是数组中的单一个元素。
- array_walk()仅返回true或者false,array_map()返回处理后的数组;
- 要得到处理后的元素值,array_walk()需要在传入参数值加&引用符号,array_map()则需要return返回。
这两种方式都可以实现同样的功能,选择其一即可。