Php 定制阵列
我得到了一个类似于下面的JSON数组的响应,我需要对包含相同roleId和TenantId的JSON进行排序,并将它们与相同数组中的所有特性一起发送Php 定制阵列,php,arrays,json,Php,Arrays,Json,我得到了一个类似于下面的JSON数组的响应,我需要对包含相同roleId和TenantId的JSON进行排序,并将它们与相同数组中的所有特性一起发送 [ { "roleId": 1, "role": "admin", "featureId": 1, "feature": "Dashboard", "tenantId": 1, "tenant": "Admin" }, {
[
{
"roleId": 1,
"role": "admin",
"featureId": 1,
"feature": "Dashboard",
"tenantId": 1,
"tenant": "Admin"
},
{
"roleId": 1,
"role": "admin",
"featureId": 2,
"feature": "Overview",
"tenantId": 1,
"tenant": "Admin"
},
{
"roleId": 1,
"role": "admin",
"featureId": 3,
"feature": "Devices",
"tenantId": 1,
"tenant": "Admin"
},
{
"roleId": 1,
"role": "admin",
"featureId": 4,
"feature": "Map View",
"tenantId": 1,
"tenant": "Admin"
}
]
我需要对其进行定制,并以响应的形式返回,如下所示,在子json中按tenantid和role分组
{
"roleId": 1,
"role": "admin",
"features": [
{
"featureId": 1,
"feature": "Dashboard"
},
{
"featureId": 2,
"feature": "Overview",
},
{
"featureId": 4,
"feature": "Map View",
},
{
"featureId": 3,
"feature": "Devices",
}
],
"tenantId": 1,
"tenant": "Admin"
},
{
"roleId": 2,
"role": "monitor",
"features": [
{
"featureId": 1,
"feature": "Dashboard"
},
{
"featureId": 2,
"feature": "Overview",
},
{
"featureId": 4,
"feature": "Map View",
},
{
"featureId": 3,
"feature": "Devices",
}
],
"tenantId": 1,
"tenant": "Admin"
}
集成后,预期的UI应该如下所示
请帮我解决这个问题
提前感谢。您需要使用 2.然后您需要使用来循环此数据 3.现在创建一个新数组,通过将
roleId
设置为数组键,将值分配给循环内的该数组[这样相同的roleId
值将自动分配给相同的子数组]
4.现在执行以下操作以重新索引最终数组
5.使用此代码进行编码,以获得所需的格式
代码:-
$array = json_decode( $json , true);
$final_array = array();
foreach($array as $arr){
$final_array[$arr['roleId']]['roleId'] = $arr['roleId'];
$final_array[$arr['roleId']]['role'] = $arr['role'];
$final_array[$arr['roleId']]['feature'][] = array('featureId'=>$arr['featureId'],'feature'=>$arr['feature']);
}
$final_array = array_values($final_array);
echo json_encode($final_array);
输出:-在所需的输出数组中不能有相同的索引。它们将被覆盖[
功能
,功能ID
…等]。请看这里:-不可能实现下面的响应,以后无法解析回数组,您知道吗?一个数组在同一子数组中只能有一个具有相同名称的键。我已更改了所需的响应,请您在@AlivetoDieTqs中查找双向数组绑定解决方案:)