猿问

通过 key 从 json 文件中删除一个项目

我正在尝试使用 id 属性匹配从 json 文件中删除项目。


我真正需要的未设置是什么?


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

    }

  }

}


浮云间
浏览 153回答 1
1回答

有只小跳蛙

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;    }}
随时随地看视频慕课网APP
我要回答