爆炸的字符串与键=>值

问题描述:

阵列我有字符串是:爆炸的字符串与键=>值

$string = '200AUD, 150USD, 80GBP, 1250000VND'; 

如何从$字符串转换为与关键=>值的数组。

Key: AUD => Value 200 
Key: USD => Value 150 
Key: GBP => 80 
Key: VND => 1250000 

更新时间:

@马克·贝克我的php版本是5.4,所以我不能测试你的代码,感谢

@Aleatoric 我使用此代码,但数组返回一些空格键和值的字符:

   Array 
(
    [ CHF] => 130 
    [ GBP] => 80 
    [ USD] => 125 
    [ DKK] => 750 
    [ PLN] => 400 
    [ CZK] => 2500 
    [ YTL] => 175 
    [ BGN] => 175 
    [ RUB] => 4000 
    [ RON] => 400 
    [ SEK] => 1000 
) 

我已经使用trim()去除所有空间,但是你能告诉我最好的这个问题的想法,而不使用trim()函数?

你将有爆炸的字符串先用:

$array1 = explode(',', $string); 

,然后遍历与foreach循环的要素分割字符串,并把它们放到一个关联数组:

$array2 = array(); 
foreach($array1 as $string){ 
    $currency = trim(preg_replace("/[0-9]+/", "", $string)); 
    $value = trim(preg_replace("/[a-zA-Z]+/", "", $string)); 
    $array2[$currency] = $value; 
} 
+0

我更新了我的问题,请指教。 – JohnTang

+0

几个修复程序。首先,删除初始字符串中的空格。所以你会有$ string ='200AUD,150USD,80GBP,1250000VND';或者,使用explode(“,”,$ string)包含空格。还有其他方法可以做到这一点,但老实说,这是修剪的用例。使用trim()有什么问题? – WinterMute

+0

在输入可能包含或不包含额外空白的情况下,修剪也会更好。其他方法将失败,您将不得不对输入应用附加检查以确保其符合。修剪是你最好的选择,我相应地更新了我的答案。 – WinterMute

需要PHP> = 5.5

$string = '200AUD, 150USD, 80GBP, 1250000VND'; 

$currencyArray = array_column(
    array_map(
     function ($value) { 
      return sscanf($value, '%d%s'); 
     }, 
     explode(',', $string) 
    ), 
    0, 
    1 
); 

var_dump($currencyArray);