php - 返回 JSON 数组 rom 数据库响应(流明 php)
问题描述
我正在尝试对从数据库中收到的响应进行排序以返回一个不错的 JSON 数组,但我找不到如何去做,所以我向你寻求帮助。
来自数据库的响应:
[{"stad":"\u00d6rebro","lokalnamn":"Allm\u00e4nrepan"},
{"stad":"Kumla","lokalnamn":"Rum 1"},{"stad":"Kumla","lokalnamn":"Rum
2"},
{"stad":"Kumla","lokalnamn":"Rum 4"},
{"stad":"Karlstad","lokalnamn":"UNO"},
{"stad":"Karlstad","lokalnamn":"Replokal 231"}]
我希望它返回如下内容:
[
"\u00d6rebro":{"Allm\u00e4nrepan"},
"kumla":{"Rum 1","Rum 2","rum 4"},
"Karlstad":{"uno","replokal 231"}
]
希望你明白这一点,
试图在数组上调用 response->json(),但没有成功,我无法在网上找到任何进一步的信息,因为我不确定要搜索什么
解决方案
您可以通过以下步骤来实现:
- 根据您的 json 创建一个具有键值的数组
- 仅将具有 1 个值的元素修改为不是数组(使用array-map)
将此代码视为示例:
$s = '[{"stad":"\u00d6rebro","lokalnamn":"Allm\u00e4nrepan"},{"stad":"Kumla","lokalnamn":"Rum 1"},{"stad":"Kumla","lokalnamn":"Rum 2"},{"stad":"Kumla","lokalnamn":"Rum 4"},{"stad":"Karlstad","lokalnamn":"UNO"},{"stad":"Karlstad","lokalnamn":"Replokal 231"}]';
$arr = json_decode($s, true);
$res = array();
foreach($arr as $elem) {
$key = $elem["stad"];
$value = $elem["lokalnamn"];
if (array_key_exists($key, $res)) {
$res[$key][] = $value;
} else {
$res[$key] = array($value);
}
}
$a = array_map(function($elem) {
if (is_array($elem) && count($elem) == 1)
return $elem[0];
else return $elem;
},$res);
这会给你:
Array
(
[Örebro] => Allmänrepan
[Kumla] => Array
(
[0] => Rum 1
[1] => Rum 2
[2] => Rum 4
)
[Karlstad] => Array
(
[0] => UNO
[1] => Replokal 231
)
)
推荐阅读
- r - 在 BQ 中使用带有 WHERE 语句的表属性进行选择
- django - pythonanywhere.com 上我的 django 项目中 /email/signup/ 的 SMTPAuthenticationError
- python - 如何撤消我在 Pycharm 的调试模式下所做的更改?
- amazon-redshift - 编辑后删除了 Redshift 预定查询
- javascript - 可能的内存泄漏 - Javascript Watchers,用于动画数据的动态 CSS 变量
- javascript - 如何在 SharePoint 类中使用客户 HTML/CSS?
- vue.js - 在现有的 vue 3 应用程序中集成流星
- ios - 如何在我的 SwiftUI 应用程序中初始化我的 ViewModel
- laravel - 收到来自另一个网址的帖子后,Laravel 8 过期会话
- android - Android:以正确的方式应用 MVVM(第二部分)