Удалить элемент из JSON, возвращенного из API - PullRequest
0 голосов
/ 04 августа 2020

Я новичок в PHP и у меня возникают проблемы с попыткой удалить элемент из данных, возвращаемых API

function getData()
{    
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
    curl_setopt($ch, CURLOPT_POSTFIELDS, "");
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json',));
    

    $data = curl_exec($ch);


    echo $data;
    exit();
}

Вот данные JSON, я хочу удалить элемент с Id 11, как я могу это сделать?

{
    "Data": [
        {
            "Id": 11,
            "Name": "Name1"
        },
        {
            "Id": 12,
            "Name": "Name2"
        }
    ]
}

Ответы [ 3 ]

3 голосов
/ 04 августа 2020
  1. Расшифровать данные.
  2. Удалить элемент из массива.
  3. При необходимости снова закодировать его как строку.
$dataArray = json_decode($data, true);

foreach ($dataArray['Data'] as $key => $item) {
    if ($item['Id'] === 11) {
        unset($dataArray['Data'][$key]);
    }
}

$data = json_encode($dataArray);
2 голосов
/ 04 августа 2020

будет работать

$dataArray = json_decode($data, true);
$dataArray['Data'] = array_filter($dataArray['Data'], function($el){return $el["Id"]<>11;});
$data = json_encode($dataArray);
1 голос
/ 04 августа 2020

Один из способов - переиндексировать на Id и unset it:

$array = array_column(json_decode($data, true)['Data'], null, 'Id'));
unset($array[11]);

Теперь $array проиндексировано Id. Если хотите сбросить, то:

$array = array_values($array);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...