我已经看过这个Question and Solution,但这对我没有帮助。
我正在使用
$champ_data = file_get_contents();
从API获取数据。 API响应如下
{
"data": {
"Aatrox": {
"id": 266,
"title": "the Darkin Blade",
"name": "Aatrox",
"key": "Aatrox"
},
"Thresh": {
"id": 412,
"title": "the Chain Warden",
"name": "Thresh",
"key": "Thresh"
}
}
} //this is not all of the data, it contains more than 100 ids
因为我无法以任何方式使用$ champ_data,所以我用
解码它$champ_data = json_decode($champ_data);
然后将其转换为数组(至少我希望如此:P)
$data = 'data';
$champ_data = print_r(get_object_vars($champ_data->$data));
现在我试图用其他线程的解决方案对其进行排序,所以我做了:
usort($champ_data, function($a, $b) {
return $a['id'] - $b['id'];
});
但它甚至没有排序......它与ASC或DESC无关
我在转换时做错了吗?我的错误在哪里?
我刚刚开始编程,就像一周前一样。
感谢所有答案。 :)
答案 0 :(得分:4)
只需将$champ_data
更改为$champ_data['data']
并将true
添加到json_decode
即可解码为数组,否则您将获得对象数组。
<?php
$champ_data = '{
"data": {
"Aatrox": {
"id": 266,
"title": "the Darkin Blade",
"name": "Aatrox",
"key": "Aatrox"
},
"Thresh": {
"id": 412,
"title": "the Chain Warden",
"name": "Thresh",
"key": "Thresh"
}
}
}';
$champ_data = json_decode($champ_data, true);
echo "<pre>";
print_r($champ_data['data']);
usort($champ_data['data'], function($a, $b) {
return $a['id'] - $b['id'];
});
print_r($champ_data);
对于降序排序,只需使用
即可return $b['id'] - $a['id'];