0

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"}}

なぜこれが起こっているのかわかりません。

4

1 に答える 1

1

設定を解除すると、インデックスが保持され、表示されている構造が作成されます。配列を変更し、アイテムのインデックスを再作成する場合は、 splice の使用に関するこの回答を参照してください。

于 2013-05-22T22:38:18.933 に答える