繁体   English   中英

Laravel按JSON中的数据排序

[英]Laravel Sort by data in JSON

假设我有一个模型,该模型输出以下3个模型,即以下数据:

[
    {
        "id": 1,
        "data": [
            {
                "id": "coins",
                "qty": 3
            },
            {
                "id": "ruby",
                "qty": 52
            }
        ]
    },
    {
        "id": 2,
        "data": [
            {
                "id": "coins",
                "qty": 140
            }
        ]
    },
    {
        "id": 3,
        "data": [
            {
                "id": "coins",
                "qty": 84
            }
        ]
    }
]

我将如何使用Collections按coinsqty和谁的qty最多对这些数据进行排序。

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

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

$phpArray = json_decode($json);

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

$laravelArray = collect($phpArray);

之后, 查看https://laravel.com/docs/5.8/collections进行排序/过滤或对数组执行任何操作。

或者您可以使用纯PHP解决此问题

$json是您检索的json

$array = json_decode($json, true);
usort($array['data'], function($a, $b) {
    return $a['qty'] <=> $b['qty'];
});

print_r($array);

请参阅此示例代码

<?php

    $json = '{
    "Message": "Done.",
    "Status": true,
    "InnerData": [
  {
     "id": 66,
     "name": "first",
     "distance": 74
  },
  {
     "id": 67,
     "name": "second",
     "distance": 153
  },
  {
     "id": 68,
     "name": "third",
     "distance": 172
  }
]
}';
$array = json_decode($json, true);
usort($array['InnerData'], function($a, $b) {
   return $a['distance'] <=> $b['distance'];
});

print_r($array);

希望对您有帮助。

谢谢。

一个很好的干净方法是使用“。”。 运营商。

$projects = Project::all()->load('tasks')->sortBy('data.qty');

试试这个$ array = collect($ array)-> sortBy('data.qty')-> reverse()-> toArray();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM