У меня есть Json-файл.В этом JSON-файле я удалил объект.Это достигается путем создания нового массива и записи этого массива в исходный файл JSON.Но здесь я получаю проблему, потому что новые данные перезаписывают весь JSON-файл.
Я пробовал с
array_merge
array_replace
array_merge_recursive
array_replace_recursive
Но я получаю всегда один и тот же результат: (Здесь я удалил первыйObject)
{
"server": {
"SERVER-01": [
{
"svc": "SERVICE01",
"id": 1
},
{
"svc": "SERVICE02",
"id": 2
},
{
"svc": "SERVICE03",
"id": 3
},
{
"svc": "SERVICE04",
"id": 4
}
]
}
}
Исходный файл имеет следующее содержимое:
{
"server": {
"SERVER-01": [
{
"svc": "SERVICE01",
"id": 1
},
{
"svc": "SERVICE02",
"id": 2
},
{
"svc": "SERVICE03",
"id": 3
},
{
"svc": "SERVICE04",
"id": 4
}
{
"svc": "SERVICE05",
"id": 5
}
]
"SERVER-02": [
{
"svc": "SERVICE01",
"id": 1
},
{
"svc": "SERVICE02",
"id": 2
},
{
"svc": "SERVICE03",
"id": 3
},
{
"svc": "SERVICE04",
"id": 4
}
{
"svc": "SERVICE05",
"id": 5
}
]
}
}
Мой вопрос: как я могу обновить массив, например, с именем Server-01, с новыми данными, не удаляя их?другие массивы?
Это код PHP, который у меня есть:
// load file
$file = file_get_contents($filename_moni);
// decode copy of json to associative array
$data = json_decode($file, true);
// get ID to delete
$ID = $ID - 1;
unset($data['server'][$Server][$ID]);
$var=array();
foreach($data['server'][$Server] as $key => $item) {
$var['server'][$Server][] = $item;
}
foreach($var['server'][$Server] as $key => $item) {
if ( $key != $var['server'][$Server][$key]['id'] ) {
$var['server'][$Server][$key]['svc'] = $item['svc'];
$var['server'][$Server][$key]['id'] = $key + 1;
}
}
$data = array_replace($data,$var);
$jsondata = json_encode($data, JSON_PRETTY_PRINT|JSON_NUMERIC_CHECK);
file_put_contents($filename_moni, $jsondata);