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

时间:2016-04-03 06:24:33

标签: php arrays sorting

我有这样的字符串:

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}}

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

希望这有帮助。