Php 定制阵列

Php 定制阵列,php,arrays,json,Php,Arrays,Json,我得到了一个类似于下面的JSON数组的响应,我需要对包含相同roleId和TenantId的JSON进行排序,并将它们与相同数组中的所有特性一起发送 [ { "roleId": 1, "role": "admin", "featureId": 1, "feature": "Dashboard", "tenantId": 1, "tenant": "Admin" }, {

我得到了一个类似于下面的JSON数组的响应,我需要对包含相同roleId和TenantId的JSON进行排序,并将它们与相同数组中的所有特性一起发送

[
    {
        "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中查找双向数组绑定解决方案:)