2011-07-06 34 views
2

我試圖打破這種字符串,如何將此字符串分解爲這樣的數組?

AFRIKAANS = af 
ALBANIAN = sq 
AMHARIC = am 
ARABIC = ar 
ARMENIAN = hy 
AZERBAIJANI = az 
BASQUE = eu 
BELARUSIAN = be 
BENGALI = bn 
BIHARI = bh 
BULGARIAN = bg 
BURMESE = my 
CATALAN = ca 
CHEROKEE = chr 
CHINESE = zh 

進入這樣

$lang_codes['chinese'] = "zh"; 

數組所以語言的名稱是關鍵,和值是語言代碼。這非常簡單,但我無法理解它。我已經採取了從編程制動,時間過長,很明顯......

我試過在\n爆炸然後用foreach,在=再次爆炸,但我似乎無法拼湊一起就是我想要的。

+0

介意顯示代碼? –

回答

4

我試過在\爆炸N,然後使用foreach,再次在爆炸「=」

我認爲這是完全正確的做法。

$lines = explode("\n", $langs); 
$lang_codes = array(); 

foreach ($lines as $line) { 
    list ($lang, $code) = explode(" = ", $line, 2); 
    $lang_codes[$lang] = $code; 
} 

如果你想在語言使用小寫字母,因爲在你的例子($lang_codes['chinese']),您將需要調用strtolower

$lang_codes[strtolower($lang)] = $code; 

查看PHP手冊欲瞭解更多關於這些功能:

0

MAYB你shold做:

$array = explode("\n" , $string); 
$finalArray =array(); 
$foreach ($array as $value){ 
     $array2 = explode(' = ', $value); 
     $finalArray[$array2[1]] = $array2[0]; 

} 
+2

這不起作用,因爲'\ n'不被解釋爲單引號內的換行符。 – lonesomeday

+0

是的你是對的 –

0
<?php 
$str ="AFRIKAANS = af 
ALBANIAN = sq 
AMHARIC = am 
ARABIC = ar 
ARMENIAN = hy 
AZERBAIJANI = az 
BASQUE = eu 
BELARUSIAN = be 
BENGALI = bn 
BIHARI = bh 
BULGARIAN = bg 
BURMESE = my 
CATALAN = ca 
CHEROKEE = chr 
CHINESE = zh"; 

$arr = explode("\n", $str); 
$lang_mapped = array(); 

foreach ($arr as $line) { 
    list ($lang, $code) = explode(" = ", $line, 2); 
    $lang_mapped[$lang] = $code; 
} 
$arr = explode("\n", $str); 
echo "<pre>"; 
print_r($lang_mapped); 
echo "</pre>"; 
?> 
2

雖然爆炸的答案是技術上是正確的,我立刻想到,你試圖解析INI文件。這是更簡單的方法,完全符合你的要求。

<?php 
$string = "AFRIKAANS = af 
ALBANIAN = sq 
AMHARIC = am 
ARABIC = ar 
ARMENIAN = hy 
AZERBAIJANI = az 
BASQUE = eu 
BELARUSIAN = be 
BENGALI = bn 
BIHARI = bh 
BULGARIAN = bg 
BURMESE = my 
CATALAN = ca 
CHEROKEE = chr 
CHINESE = zh"; 

$array = array_change_key_case(parse_ini_string($string)); 

echo $array['chinese'];