laravel - 在 Laravel 中将数组转换为对象
问题描述
我的控制器返回了以下数据:
[
{
"date": "2019-12-06",
"weekday": "Friday",
"users": 2
},
{
"date": "2019-12-07",
"weekday": "Saturday",
"users": 1
},
{
"date": "2019-12-08",
"weekday": "Sunday",
"users": 1
},
{
"date": "2019-12-09",
"weekday": "Monday",
"users": 1
},
{
"date": "2019-12-10",
"weekday": "Tuesday",
"users": 1
},
{
"date": "2019-12-11",
"weekday": "Wednesday",
"users": 2
}
]
我想返回这个:
{
"Sunday": 1,
"Monday": 1,
"Tuesday": 1,
"Wednesday": 2,
"Thursday": 0,
"Friday": 2,
"Saturday": 1
}
对象中的数字是前一个数组中的“用户”,请问我该怎么做?
解决方案
你可以这样使用
$data = collect($data);
$result = $data->pluck('weekday', 'users');
然后随心所欲地订购
完整的解决方案
$data = '[
{
"date": "2019-12-06",
"weekday": "Friday",
"users": 2
},
{
"date": "2019-12-07",
"weekday": "Saturday",
"users": 1
},
{
"date": "2019-12-08",
"weekday": "Sunday",
"users": 1
},
{
"date": "2019-12-09",
"weekday": "Monday",
"users": 1
},
{
"date": "2019-12-10",
"weekday": "Tuesday",
"users": 1
},
{
"date": "2019-12-11",
"weekday": "Wednesday",
"users": 2
}
]';
$data = json_decode($data);
$data = collect($data);
$orders = [
"Sunday",
"Monday",
"Tuesday",
"Wednesday",
"Thursday",
"Friday",
"Saturday"
];
$result = new stdClass();
foreach ($orders as $weekday) {
$result->{$weekday} = $data->where('weekday', $weekday)->first()->users ?? 0;
}
dd($result);
结果是
推荐阅读
- r - 如何在R中使用字符变量制作直方图
- discord.js - 我收到错误:embed.description 不是函数
- node.js - 从 Gitlab 部署到 Heroku,带有快速服务器的 React 应用程序导致空白页面,控制台在块中记录“意外令牌”
- javascript - bootstrap-datepicker 选择的日期返回 null
- react-native - 'react-native-mathjax' 高度自动调整不起作用
- php - 如何动态修改 PHP 中 meta 属性="og:image" 的内容?
- python - python:RecursionError:调用将数据帧传递给类方法的Python对象时超出了最大递归深度
- node.js - 在 node.js 中上传多个图像时出错
- c# - 不要在 BindingSource C# 中对历史列进行排序
- outlook - Outlook 日历 API 支持哪些 Outlook 产品?