2013-08-27 44 views
0

喜陣走,我有一個簡單的問題 我使用array_walk編碼陣列,以UTF8這樣的:Array_map對因預警問題

array_walk($row, 'utf8_encode'); 

,但我一直得到一個PHP的警告這一

(PHP Warning: Wrong parameter count for utf8_encode()). 

所以我想知道是否使用array_map而不是編碼爲utf8(array_walk('utf8_encode',$row);)具有相同的效果,因爲數組映射我沒有警告問題。

謝謝。

+1

什麼是你的'row'看起來像$? – Nadh

+0

$ row是mysql_fetch_row的結果數組($ res) – user2613707

+0

您應該將MySQL的連接參數設置爲'utf8',而不是事後對數據進行編碼。 – deceze

回答

0

utf8_encode有一個參數,修復:

array_walk($row, function (&$value,$key) { 
    return utf8_encode($value); 
}); 
1

這是因爲,函數utf8_encode預計只有1 PARAM,但array_walk()給人2.你可以不喜歡它:

function encode_items(&$item, $key) { 
    $item = utf8_encode($item); 
} 
array_walk($row, 'encode_items'); 

或剿警告(不好)

@array_walk($row, 'utf8_encode'); 

或更好的使用array_map()

function utf8_encode_array($array) { 
    return array_map('utf8_encode', $array); 
} 
$encoded = array_map('utf8_encode_array', $row);