如何仅用PHP中的新密钥动态更新JSON文件?

时间:2018-09-22 13:39:37

标签: php arrays json database

我有一个有效的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字符串。

所以,现在我在浏览器中运行两个不同的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。我得到正确的回显,其中显示了第一个JSON对象,第二个显示了附加的”username:”johndoe”

我需要做的是将$jsonData$difference数组进行比较,并将username键添加到我的第一个JSON对象中,然后再将put_contents()添加到我的JSON文件中。我设置了一个foreach来获取$difference数组的键和值,但我不知道如何执行上述操作来动态更新JSON文件。

我需要检查JSON文件中的其他对象是否包含新密钥(在这种情况下,它是用户名,但可能会有所不同,因此我需要在代码中动态获取密钥),并将此类KEY添加到那些没有那个钥匙。

0 个答案:

没有答案