爆炸的字符串与键=>值
问题描述:
阵列我有字符串是:爆炸的字符串与键=>值
$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;
}
答
需要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);
我更新了我的问题,请指教。 – JohnTang
几个修复程序。首先,删除初始字符串中的空格。所以你会有$ string ='200AUD,150USD,80GBP,1250000VND';或者,使用explode(“,”,$ string)包含空格。还有其他方法可以做到这一点,但老实说,这是修剪的用例。使用trim()有什么问题? – WinterMute
在输入可能包含或不包含额外空白的情况下,修剪也会更好。其他方法将失败,您将不得不对输入应用附加检查以确保其符合。修剪是你最好的选择,我相应地更新了我的答案。 – WinterMute