php - 自定义查询响应数组
问题描述
我有一个 JSON 响应要根据我们的需要进行定制
响应如下所示,其中包含多个带有数据的数组
但我想整理出像 MAIN 这样的单个类别,并在一个数组中显示所有相关的东西,并在其值中显示
[
{
"Main": [
"Map View"
],
"Reports": [
"Sensor Data Report"
],
"Configuration": [
"Region Configuration"
],
"Admin": [
"Customer Management"
]
},
{
"Main": [
"Map View"
],
"Reports": [
"Sensor Data Report"
],
"Configuration": [
"Region Configuration"
],
"Admin": [
"Device Management"
]
}
]
但我需要这样的东西
{
"Main": [
"Dashboard",
"Devices"
],
"Reports": [
"Alert Report",
"MOnthly Reports"
],
"Configuration": [
"Region Configuration",
"Device Management"
]
}
解决方案
一个选项可能是,因为您的第一个包含数据的多个数组每个条目包含一个项目,所以使用 2 次 aforeach
并收集同一键的所有值。
由于您的示例数据包含重复值,您可以使用array_unique
$result = [];
foreach ($arrays as $array)
foreach ($array as $k => $v)
array_key_exists($k, $result) ? $result[$k][] = $v[0] : $result[$k] = [$v[0]];
$result = array_map('array_unique', $result);
print_r($result);
看一个php 演示
结果
Array
(
[Main] => Array
(
[0] => Map View
)
[Reports] => Array
(
[0] => Sensor Data Report
)
[Configuration] => Array
(
[0] => Region Configuration
)
[Admin] => Array
(
[0] => Customer Management
[1] => Device Management
)
)
推荐阅读
- c++ - 从 Rcpp Catch 测试中访问 `inst/extdata` 的数据
- c# - 通过代理时连接超时
- android - NotifyItemRangeInserted 不会触发要回收的视图
- amazon-web-services - DynamoDBMapper 有条件地保存对象列表
- php - ACF 设置图库缩略图自定义大小
- javascript - 单击文档时如何关闭菜单(EventListener)
- php - 激活购买的主题时,Wordpress 管理员中断
- android - [[15.0.1,15.0.1]] 的各种其他库正在请求库 com.google.android.gms:play-services-base,但解析为 16.0.1
- r - `%between%` (data.table) 给了我一个奇怪的结果
- python - 无频率不允许seasonal_decompose