2017-02-17 3 views
1

このJSON配列をimdbの値下げで最高値でソートしたい。私が試してみましたJSONを最高値でソートするPHP

[{ 
    "name": "Space home", 
    "year": 2012, 
    "plot": "Ghost dies in fire", 
    "run": 103, 
    "run_category": "1", 
    "rated": "PG-13", 
    "imdb": 83, 
    "meta": 82, 
    "genre": "001 002 003", 
    "tags": "test", 
    "source": "movie123", 
    "id": 6483953 
}, { 
    "name": "Epaaoon", 
    "year": 2016, 
    "plot": "Space dies in fire", 
    "run": 153, 
    "run_category": "2", 
    "rated": "R", 
    "imdb": 64, 
    "meta": 54, 
    "genre": "001 006 007", 
    "tags": "test2", 
    "source": "movie423", 
    "id": 7352753 
}] 

:私はここで見つけましたが、私はそれが仕事を得るカントと私は理由は分からない

usort($data, function($a, $b) { function 
return $a->imdb > $b->imdb ? -1 : 1; }); 

。どんな助けでも大歓迎です。

EDIT:

<?php $url = $_SERVER['DOCUMENT_ROOT'] . '/../data.json'; 
$data = json_decode(file_get_contents($url), true); 
usort($data, function($a, $b) { //Sort the array using a user defined function 

return $a->meta > $b->meta ? -1 : 1; //Compare the scores 
}); 
print_r($data); 
?> 
+0

あなたのコードには欠けているものがたくさんあると思います。より完全な例を投稿できますか? – Augwa

+0

申し訳ありません完全なPHPコードで更新されました。 –

+0

2番目の引数 'json_decode()'に 'true'を使うので、要素はオブジェクトではなく配列です。それは '$ a-> meta'ではなく、$ a ['meta']'です。 – Barmar

答えて

1

json_decode()true引数を取り除く、または比較機能で$a['meta']$b['meta']を使用しますか。 json_decode()の2番目の引数は、JSONオブジェクトをオブジェクトではなくPHPの連想配列に変換するように指示します。

関連する問題