我有一个有效的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字符串,如下所示:
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
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添加到那些没有那个钥匙。