2016-04-26 43 views
-1

要開始我不是在php中經驗豐富,所以我有這個代碼,我沒有寫自己。結合使用str_replace與ut8_decode

.utf8_decode($var['ciudad']). 

它返回一個城市的價值,這是一個數字,66170或66001.

我需要的是,它不返回的數目,但這個城市的名字。所以我們假設回報是'66170',它應該顯示'倫敦'而不是'66170'。

現在我知道我應該使用str_replace。但是,這裏是我卡住的地方,代碼片段中有utf8_decode,與我的代碼混淆。 (或只是混淆了我),我的想法是多多少少是這樣的:

$ciudad= .utf8_decode(str_replace('66170 ', 'London',($var['ciudad']).')) 
+0

爲什麼在'utf8_decode()'函數調用前面有點? – Sammitch

+0

我認爲是的,tbh我是一個PHP新手,我沒有寫原始代碼 – Marnick

回答

2

簡答

你正在嘗試做的是

$ciudad = utf8_decode(str_replace('66170', 'London',$var['ciudad'])); 

刪除一個點,一個空格,一些括號和引號。

長的答案

我建議使用兩個數組。第一個是所有城市的號碼,第二個是所有城市的名稱,然後用它們作爲str_replace參數。例如:

$citiesCodes = Array(1, 2, 3, 4, ... , 66170); 
$citiesNames = Array('New York', 'Santo Domingo', 'La Paz', 'Lima', ... , 'London'); 


$ciudad = utf8_decode(str_replace($citiesCodes, $citiesNames, $var['ciudad'])); 
+0

非常感謝HV Sombrilla。這工作完美。 – Marnick

+0

我會對數據定義的這種方式發出警告 - 當您想要添加或刪除某些城市並錯誤地將一個數組相對於另一個數組移動時,很難進行調試......使用關聯數組並更改'str_replace ()'to strtr()':'$ cities = Array('66170'=>'London','66001'=>'New York'); $ ciudad = strtr($ var ['ciudad'],$ cities);' – kay27

0

你的想法是正確的。你錯過的唯一的事情是,你首先需要對它進行解碼:

$ciudad = str_replace('66170', 'London', utf8_decode($var['ciudad'])); 

如果你有很多城市代碼,最好使用strtr()。我已經更新您的根據最後的評論我的建議:

$cities = Array(
    '66170' => 'London', 
    '66001' => 'New York', 
    '66002' => 'Beijing', 
); 

$ciudad = strtr($var['ciudad'], $cities); 
+0

我已經使用上面提到的代碼,因爲它使我的有限的PHP知識更有意義。但我明天早上會爲了教育目的嘗試你的解決方案。謝謝回覆! – Marnick

+0

不客氣!但是,如果上面的答案適用於你,似乎你不需要使用整個utf8_decode()...看看它使用的地方:http://stackoverflow.com/questions/4095899/utf8-encoding-problem -with-good-examples這是沒有理由對簡單的數字做這個 – kay27