Php 按API中的值对多维数组排序
我已经看过了,但这对我没有帮助 我正在使用Php 按API中的值对多维数组排序,php,arrays,sorting,multidimensional-array,Php,Arrays,Sorting,Multidimensional Array,我已经看过了,但这对我没有帮助 我正在使用 $champ_data = file_get_contents(); 从API获取数据。 API响应如下 { "data": { "Aatrox": { "id": 266, "title": "the Darkin Blade", "name": "Aatrox", "key": "Aatrox" }, "Thresh": {
$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_数据,所以我用
$champ_data = json_decode($champ_data);
然后将其转换为数组(至少我希望是这样:p)
现在我正试图用另一个线程的解决方案对其进行排序,所以我做到了:
usort($champ_data, function($a, $b) {
return $a['id'] - $b['id'];
});
但它甚至不是排序。。。ASC或DESC不重要。我的转换有问题吗?我的错误在哪里?
我一周前才开始编程
谢谢你的回答。:) 只需将
$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);
只需将
$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);
要按升序或降序排序吗?这里的排序过程太复杂了。你能不能把你的问题再读一遍,大声说出来,然后问自己“我到底在问什么?”然后加上这个。这看起来像是一个简单的问题,你已经尝试了一些很好的方法,但这也是一个简单的解决方案——只需要知道它是什么,渴望得到答案。上升和下降都没关系,我都要。我只是不知道我的错误在哪里。我一周前刚开始编程。要按升序还是降序排序?排序过程太复杂了。你能不能把你的问题再读一遍,大声说出来,然后问自己“我到底在问什么?”然后加上这个。这看起来像是一个简单的问题,你已经尝试了一些很好的方法,但这也是一个简单的解决方案——只需要知道它是什么,渴望得到答案。上升和下降都没关系,我都要。我只是不知道我的错误在哪里。我一周前才开始编程。哇,看来json_解码的“真”有帮助。我应该用['data']而不是->$data,哈哈。谢谢!哇,看来json_解码的“真”有帮助。我应该用['data']而不是->$data,哈哈。谢谢!
return $b['id'] - $a['id'];