1. 程式人生 > >PHP的array_walk和array_map函數實現數組值UTF-8轉GBK編碼

PHP的array_walk和array_map函數實現數組值UTF-8轉GBK編碼

for php false 2gb fun foreach () clas 內部

在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;
}

由此也可以看出這兩個函數的共性和區別:

  1. 傳入這兩個函數的 $value,就是數組中的單一個元素。
  2. array_walk() 僅返回true或者falsearray_map() 返回處理後的數組;
  3. 要得到處理後的元素值,array_walk() 需要在傳入參數值加 &
    引用符號,array_map() 則需要return返回。

這兩種方式都可以實現同樣的功能,選擇其一即可。

PHP的array_walk和array_map函數實現數組值UTF-8轉GBK編碼