2017-01-07 6 views
0

私は作成したJSONファイルを持っており、最大の価格から並べ替える必要があります。配列を並べ替えるができないのですか?

JSONはこのようなものです:私は最高値

からqmimiソートしたい

[ 
    { 
    "username": "elbugato", 
    "sold": 19, 
    "qmimi": 38.5 
    }, 
    { 
    "username": "Pablo", 
    "sold": 12, 
    "qmimi": 42 
    }, 
    { 
    "username": "Hqstuff", 
    "sold": 0, 
    "qmimi": "0" 
    }, 
    { 
    "username": "matchspamm3rs", 
    "sold": 0, 
    "qmimi": "0" 
    }, 
    { 
    "username": "Pachenko", 
    "sold": 1, 
    "qmimi": 1.1 
    }, 

私のPHPコードはこれです。

$sellertop8json = json_decode(get_html('link')); 
$i = 1; 
sort($sellertop8json->qmimi, SORT_NUMERIC); 
foreach($sellertop8json as $top8){ 
max($top8); 
     if (++$i == 8) break; 


    echo '<tr> 
    <td>'.$top8->username.'</td> 
    <td># '.$top8->sold.'</td> 
    <td>$ '.$top8->qmimi.'</td> 
    </tr> 
    '; 


} 

しかし、彼らは、最大値からソートされていませんが、 結果は私が手:

result

ルック「をPachenko」で、彼は獲得「0」を持っている売り手の後です。私はGoogleのクロムに使用していますいくつかの拡張からコピーされ、JSONはRAWではないので、それは問題ではないJSON:

は私の悪い英語のため申し訳ありません

P.Sをありがとうございました。

+0

ウェブ上の配列を簡単にソートするアルゴリズムを見つけることができます。 –

+2

[PHPで配列とデータを並べ替えるにはどうしたらいいですか?](http://stackoverflow.com/questions/17364127/how-can-i-sort-arrays-and-data-in-php) –

答えて

0

あなたはusortを使用して、要素のフィールドを比較するカスタム関数を提供する必要があります:最初の要素は低いと大きい場合の要素が0未満、等しい場合

usort($sellertop8json, function($a, $b) { 
      return $a->qmimi == $b->qmimi ? 0 : 
        $a->qmimi < $b->qmimi ? 1 : -1; 
     } 
); 

比較関数は0を返す必要があります2番目の要素が高い場合は0より大きい。

これは、最高から並べ替えているので、少し混乱する可能性があります。したがって、比較のサインのスワップは、比較の最後の部分を参照してください。

+0

ありがとう出来た –

関連する問題