2016-04-03 18 views
0

私はこのような文字列を持っていますUSD)文字列の2つの値を交換し、PHPの2番目の値でソートしますか?</p> <pre><code>EUR-USD,USD-EUR,SEk-CAD </code></pre> <p>私は配列にソート二通貨によってこれをしたいと私は</p>が <pre><code>SEk-CAD,USD-EUR,EUR-USD </code></pre> <p>(CAD、EURとによってソートする結果にしたい:

これは私の試みですが、うまくいきますが、これを「過ぎない」と思っていますか?誰でもこれを達成するためのより簡単な/より良い解決策を持っていますか?

第二の通貨

通貨ペアの配列を作成します:上記の配列の通貨ペアの

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) 

逆順にし、非mutlidimensional配列にそれらを置く:

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) 

リバースオーダーと非mutlidimensional配列にそれらを置く:

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

[sort-multi-dimensional-array-by-value](http://stackoverflow.com/questions/2699086/sort-multi-dimensional-array-by-value) –

答えて

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 

希望します。

+0

ニース。どうもありがとう! – bestprogrammerintheworld

+1

私は短くて良いアプローチをしていると思う。私の答えを編集させてください。 :) –

関連する問題

 関連する問題