Настройка массива - PullRequest
       10

Настройка массива

1 голос
/ 08 мая 2019

Мне ответили, как массив JSON, как показано ниже, и мне нужно отсортировать JSON, содержащий одинаковые roleId и TenantId, и отправить их со всеми функциями в одном массиве.

[
    {
        "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"
    }
]

Iнеобходимо настроить его и вернуть в качестве ответа, как показано ниже, группировка по tenantid и роли в подчиненном json

{
    "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"
}

Ожидаемый пользовательский интерфейс должен быть примерно таким, как показано ниже после интеграции

Изображение пользовательского интерфейса

Пожалуйста, помогите мне в этом

Заранее спасибо

1 Ответ

1 голос
/ 08 мая 2019

1.Вы должны декодировать данные JSON, используя json_decode ()

2. Затем вам нужно использовать foreach () для зацикливания этих данных

3. Теперь создайте новый массив и присвойте значения этому массиву внутри цикла, сделав roleId ключами массива [чтобы такие же значения roleId автоматически передавались в тот же дочерний массив]

4. Теперь выполните array_values ​​() , чтобы переиндексировать окончательный массив

5. Закодируйте это с помощью json_encode () , чтобы получить желаемый формат.

Код: -

$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);

Выход: - https://3v4l.org/CuCI2

...