[英]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按coins
的qty
和谁的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.