Удалить элемент из файла json по ключу - PullRequest
0 голосов
/ 13 июля 2020

Я пытаюсь удалить элемент из файла json, используя сопоставление свойств id.

Что на самом деле мне нужно unset?

Json data:
{"memory":[{"id":1,"pinned":false,"title":"my title","author":"me"}, 
 {"id":2,"pinned":false,"title":"my title","author":"me"}]}


$projectsArr = json_decode(file_get_contents("../db/memory.json"), true);

if(isset($_POST['subDelete'])) {
 $selectedIitemId = $_POST["subDelete"];
  foreach($projectsArr['memory'] as &$mydata) {
    if($mydata['id'] == $selectedIitemId) {
      // unset ?
      $save = json_encode($projectsArr,JSON_UNESCAPED_UNICODE);
      file_put_contents('../db/memory.json', $save);
      header('LOCATION:approve.php');
    }
  }
}

1 Ответ

0 голосов
/ 13 июля 2020

Этот код использует индекс записи, которая соответствует и использует unset() из самого массива ($projectsArr['memory']). Кроме того, поскольку это оставляет массив с отсутствующими записями (что приведет к его сохранению как объект), он использует array_values() для сброса ключей перед сохранением данных.

foreach($projectsArr['memory'] as $key => $mydata) {
    if($mydata['id'] == $selectedIitemId) {
        unset($projectsArr['memory'][$key]);
        $projectsArr['memory'] = array_values($projectsArr['memory']);
        $save = json_encode($projectsArr,JSON_UNESCAPED_UNICODE);
        file_put_contents('../db/memory.json', $save);
        header('LOCATION:approve.php');
        exit;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...