Как динамически обновить файл JSON только новыми ключами в PHP? - PullRequest
0 голосов
/ 22 сентября 2018

У меня есть рабочий php-код, который помещает новое содержимое в файл JSON в качестве новых объектов:

        // Decode the JSON file's string into a PHP array.
        $jsonObjs = json_decode(file_get_contents($className.'.json'), true);

        // Push array       
        array_push($jsonObjs, $objects);

        // Encode the array back into a JSON string and save it.
        $jsonData = json_encode($jsonObjs);
        // Put the updated $jsonData array into the JSON file
        file_put_contents($className.'.json', $jsonData);
        // echo JSON data
        echo $jsonData;



        /*test */
        echo '<br><hr><br>';

        $updatedJsonArr = json_decode(file_get_contents($className.'.json'), true);

        $difference = array_diff_assoc($updatedJsonArr, $objects);
        print_r('DIFF: ' .json_encode($difference). '<hr>'); 


        foreach($difference as $obj) {
            foreach($obj as $key => $value){
                echo 'key: '.$key. ' -> value: '.$value.'<hr>';
            }
        }
        /*test */

Переменная $objects представляет собой строку Json с ключами и значениями.

Итак, теперь я запускаю 2 разные строки URL в своем браузере, например:

  1. http://example.com/create.php?&className=Users&string=ciccio%20ipsum%20dolor%20sit,%20quntum%20est%20lorem%20ipsec&number=123&boolean=true&myArray%5B%5D=item1&myArray%5B%5D=item2&myArray%5B%5D=item3&myArray%5B%5D=last&pointer%5Btype%5D=__pointer&pointer%5BobjID%5D=a1B2c3D&pointer%5BclassName%5D=Users

  2. http://example.com/create.php?username=johndoe&className=Users&string=ciccio%20ipsum%20dolor%20sit,%20quntum%20est%20lorem%20ipsec&number=123&boolean=true&myArray%5B%5D=item1&myArray%5B%5D=item2&myArray%5B%5D=item3&myArray%5B%5D=last&pointer%5Btype%5D=__pointer&pointer%5BobjID%5D=a1B2c3D&pointer%5BclassName%5D=Users

Итак, во второй строке URL я только что добавил username=johndoe.Я получаю правильные эхо-сигналы, которые показывают 1-й объект JSON и 2-й с дополнительным ”username:”johndoe”.

Что мне нужно сделать, это сравнить $jsonData с $difference массивом и добавить username введите мой первый JSON-объект, затем put_contents() снова в мой JSON-файл.Я установил foreach для получения ключей и значений моего $difference массива, но я не знаю, как сделать то, что упомянуто выше, для динамического обновления моего JSON-файла.

Мне нужно проверить, если другойобъекты моего JSON-файла содержат новый ключ (в данном случае это имя пользователя, но оно может меняться, и мне нужно динамически получать ключи в коде), и добавить такой KEY в те объекты, у которых нет этого KEY.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...