JSON增量不起作用

时间:2018-06-04 08:22:23

标签: php json

我正在处理一个JSON文件,我希望在该文件中增加而不是覆盖数据。但是我似乎无法做到这一点(因为它继续覆盖而不是使用递增的ID添加数据)。

下面的代码是:database_json.php(你可以看到我把它包含在saveJson.php中)

$databaseFile = file_get_contents('json_files/database.json');
$databaseJson = json_decode($databaseFile, true);
$database = $databaseJson['data'];

以下是文件的代码saveJson.php包含以下代码:

// below starts a new page, the page that submits the form called saveJson.php
include_once('database_json.php');
  $data = $_POST;
  //Setup an empty array.
   $errors = array();
if (isset($data)) {
$newExerciseData = $data;
$exerciseArray = $data['main_object'];
$databaseFile = 'json_files/database.json';
$textContent = file_get_contents($databaseFile);
$database = json_decode($textContent, true);
if ($data['id'] === 'new') {
    if (count($database['data']) == 0) {
        $ID = 0;
    }
    else {
$maxID = max($database['data']);
        $ID = ++$maxID["id"];
    }
    $newJsonFile = 'jsonData_' . $ID . '.json';
    $newJsonFilePath = 'json_files/' . $newJsonFile;
    //Create new database exercise_txt
    $newArrayData = array(
        'id' => $ID,
         // a lot of variables that aren't related to the problem
    );
 $database['data'][] = $newArrayData;
    file_put_contents($databaseFile, json_encode($database, JSON_UNESCAPED_UNICODE, JSON_PRETTY_PRINT));
    file_put_contents($newJsonFilePath, json_encode($newExerciseData, JSON_UNESCAPED_UNICODE, JSON_PRETTY_PRINT));
}
else {
    $index = array_search((int) $_POST['id'], array_column($database['data'], 'id'));
    $correctJsonFile = 'json_files/jsonData_' . $_POST['id'] . '.json';
    $newJsonFile = 'jsonData_' . $_POST['id'] . '.json';
    $newJsonFilePath = 'json_files/' . $newJsonFile;
    //Create new database exercise_txt
    $newArrayData2 = array(
        'id' => (int) $_POST['id'],
         // more not related to problem variables
    );
 $database['data'][$index] = $newArrayData2;
    file_put_contents($databaseFile, json_encode($database, JSON_UNESCAPED_UNICODE));
    file_put_contents($newJsonFilePath, json_encode($newExerciseData, JSON_UNESCAPED_UNICODE));
}
 echo json_encode($newExerciseData, JSON_UNESCAPED_UNICODE);
}

所以,我希望:增加ID而不是覆盖数据。 我已经做了一些研究,除此之外没有找到任何有用的信息 - > Auto increment id JSON,但对我来说,看起来我应用了同样的原则。

0 个答案:

没有答案