交换字符串中的两个值,并在php中按第二个值排序


Swap two values in string(s) and sort by second value in php?

我有这样的字符串:

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

希望这能有所帮助。