我有这样的字符串:
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)
(按CAD,EUR和USD排序)
这是我的尝试而且有效,但我想知道我是不是“过度”这个?任何人都有更容易/更好的解决方案来实现这一目标吗?
第二种货币
创建一组货币对:
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)
将数组粘贴到最终字符串中:
{{1}}
答案 0 :(得分:2)
试试这个:
$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
希望这有帮助。