我有这样的字符串:
EUR-USD,USD-EUR,SEk-CAD
我想把它做成一个数组,并按第二种货币排序,我想结果是
SEk-CAD,USD-EUR,EUR-USD
(按加元、欧元和美元排序)
这是我的尝试,它很有效,但我想知道我是否"做得过火"了?有人有更容易/更好的解决方案来实现这一点吗?
第二货币
创建货币对数组:
array (size=3)
0 =>
array (size=2)
0 => string 'EUR' (length=3)
1 => string 'USD' (length=3)
1 =>
array (size=2)
0 => string 'USD' (length=3)
1 => string 'EUR' (length=3)
2 =>
array (size=2)
0 => string 'SEk' (length=3)
1 => string 'CAD' (length=3)
将上述数组中货币对的顺序颠倒,并将其放入一个非多维数组:
array (size=3)
0 => string 'USD-EUR' (length=7)
1 => string 'EUR-USD' (length=7)
2 => string 'CAD-SEk' (length=7)
对数组进行排序(使用sort()
),并将该数组粘贴到新的字符串中
string 'CAD-SEk,EUR-USD,USD-EUR' (length=23)
从新创建的字符串中创建一个货币对数组:
array (size=3)
0 =>
array (size=2)
0 => string 'CAD' (length=3)
1 => string 'SEk' (length=3)
1 =>
array (size=2)
0 => string 'EUR' (length=3)
1 => string 'USD' (length=3)
2 =>
array (size=2)
0 => string 'USD' (length=3)
1 => string 'EUR' (length=3)
将上述数组中货币对的顺序颠倒,并将其放入一个非多维数组:
array (size=3)
0 => string 'SEk-CAD' (length=7)
1 => string 'USD-EUR' (length=7)
2 => string 'EUR-USD' (length=7)
将数组粘合成最后一个字符串:
string 'SEk-CAD,USD-EUR,EUR-USD' (length=23)
试试这个:
$currency_string = "EUR-USD,USD-EUR,SEk-CAD";
$currency_array = explode(",", $currency_string);
function compare($a, $b) {
$a = explode("-", $a);
$b = explode("-", $b);
if ($a[1] === $b[1]){
return 0;
}
return ($a[1] < $b[1]) ? -1 : 1;
}
usort($currency_array, "compare");
$final_currency_string = implode(",", $currency_array);
echo $final_currency_string; // Prints SEk-CAD,USD-EUR,EUR-USD
希望这能有所帮助。