如何在laravel中对json对象进行排序

时间:2018-05-21 14:06:28

标签: php json laravel laravel-5

我有以下回应,如何根据distnace

对其进行排序
{
  "Message": "Done.",
  "Status": true,
  "InnerData": [
      {
         "id": 66,
         "name": "tito",
         "distance": 74,
      },
      {
         "id": 67,
         "name": "liver pool",
         "distance": 83
      },
      {
         "id": 67,
         "name": "Text",
         "distance": 72
      }
  ]
}

我尝试了usort,但我没有成功。 我也尝试过这个答案here,但它似乎与我需要的答案不同

3 个答案:

答案 0 :(得分:2)

正如@hdifen所建议的那样,如果您使用Laravel,这样做很容易。

$json = '{
  "Message": "Done.",
  "Status": true,
  "InnerData": [
      {
         "id": 66,
         "name": "tito",
         "distance": 74
      },
      {
         "id": 67,
         "name": "liver pool",
         "distance": 83
      },
      {
         "id": 67,
         "name": "Text",
         "distance": 72
      }
  ]
}';

$data = json_decode($json, true);

$data['InnerData'] = collect($data['InnerData'])->sortBy('distance', SORT_REGULAR, true);

$encoded = json_encode($data);

echo $encoded;

输出:

{  
   "Message":"Done.",
   "Status":true,
   "InnerData":{  
      "1":{  
         "id":67,
         "name":"liver pool",
         "distance":83
      },
      "0":{  
         "id":66,
         "name":"tito",
         "distance":74
      },
      "2":{  
         "id":67,
         "name":"Text",
         "distance":72
      }
   }
}

答案 1 :(得分:1)

纯PHP 7

            if (activity.Type == ActivityTypes.Message)
        {
            await Conversation.SendAsync(activity, () => new Dialogs.RootDialog());
        }

答案 2 :(得分:0)

Json主要用作发送数据的通用格式。

在Laravel中,您可以使用json_decode()轻松地将json对象转换为php数组。

$phpArray = json_decode($json);

从这里,您可以将其转换为集合,以利用laravels集合功能。

$laravelArray = collect($phpArray);

在此之后,请查看https://laravel.com/docs/5.5/collections进行排序/过滤或对阵列执行任何操作。