2017-01-07 1 views
0

У меня есть файл JSON, который я создал, и я хочу сортировать его из самого большого значения цены.Я хочу сортировать массивы, но не могу?

JSON как это:

[ 
    { 
    "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 
    }, 

Я хочу, чтобы отсортировать qmimi от наибольшего значения

Мой 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» Заработанные.

Спасибо Извините за мой плохой английский

P.S: JSON НЕ RAW, я скопировал из некоторого расширения я использую на Google Chrome, так JSON это не проблема.

+0

Вы должны быть в состоянии найти алгоритм для сортировки массивов в Интернете легко. –

+2

Возможный дубликат [Как я могу сортировать массивы и данные в PHP?] (Http://stackoverflow.com/questions/17364127/how-can-i-sort-arrays-and-data-in-php) –

ответ

0

Вы должны использовать usort и обеспечить пользовательскую функцию сравнения поля элемента:

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

Функция сравнения должна возвращать 0 если элементы равны, меньше 0, если первый элемент меньше и больше чем 0, если второй элемент выше.

Это может быть немного запутанным, поскольку вы сортируете от самого высокого и, следовательно, своп знака в сравнении - см. Последнюю часть сравнения.

+0

Thank You это сработало –