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'];