【发布时间】:2017-07-07 14:41:12
【问题描述】:
我想按 imdb 欠值中的最大值对这个 JSON 数组进行排序。
[{
"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; });
我在这里找到的,但我无法让它工作,我不知道为什么。非常感谢任何帮助。
编辑:
<?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);
?>
【问题讨论】:
-
我认为您的代码还有更多我们缺少的东西。你能发布一个更完整的例子吗?
-
对不起!更新了完整的 php 代码。
-
由于您使用
true作为第二个参数,到json_decode(),元素是数组,而不是对象。所以它是$a['meta'],而不是$a->meta。 -
您正在通过一个对象访问它,但您已将其解码为一个数组。应该比较 $a['meta'] > $b['meta']
-
谢谢!成功了!