删除PHP中JSON数组的索引,创建字符串版本的索引

Deleting index of JSON Array in PHP, creating string version of index?

本文关键字:索引 创建 字符串 版本 PHP JSON 数组 删除      更新时间:2023-09-26

我试图得到一个PHP的工作样本,但我有一点问题。

最初,如果我只是创建JSON数据并将其保存到一个文件中,结构看起来如下

[{"id":"519d4434e39ef","title":"event 3","start":"1369108800","end":"1369195199"},
{"id":"519d4430333c1","title":"event 2","start":"1368676800","end":"1368763199"},
{"id":"519d442a2b29c","title":"event 1","start":"1368504000","end":"1368590399"}]

用下面的代码示例

创建
$msg = array('id' => uniqid(),
             'title' => $_POST['title'],
             'start' => $_POST['start'],
             'end' => $_POST['end']);

$data = get_data();
array_unshift($data, $msg);         
file_put_contents($data_file, json_encode($data))

但是,如果我想用

删除JSON数据集中的项
$deleteId  = $_POST['id'];
$data = get_data();
$index = -1;
for($i=0; $i < count($data); $i++){
  if($data[$i]['id'] == $deleteId){
  $index = $i;
  break;
  } 
}
if($index != -1){
  unset($data[$index]);
}
file_put_contents($data_file, json_encode($data))

文件最终看起来像下面的

{"0":{"id":"519d4434e39ef","title":"event 3","start":"1369108800","end":"1369195199"},
"2":{"id":"519d442a2b29c","title":"event 1","start":"1368504000","end":"1368590399"}}

我不明白为什么会发生这种事。

Unset保留索引,创建您所看到的结构。

如果您想更改数组并重新索引条目,请参阅关于使用splice的答案。