我正在尝试将键和值附加到数组中的现有JSON对象,但无法弄清楚我做错了什么。我在这里阅读了几个主题但找不到与我的问题相关的任何内容。
这就是JSON文件的样子:
{
"23-06-2017":{
"1:1":"text",
"1:2":"text",
"1:3":"text"
},
"24-06-2017":{
"1:1":"text",
"1:2":"text",
"1:3":"text"
}
}
所以有一个日期(23-06-2017
)的数组,里面有键和值。 "1:1": "text"
这就是我的代码的样子:
<?php
$testArray = explode(',' $_POST['javascript_array_string']);
$testText = $_POST['testText'];
$testDate = $_POST['testDate'];
$foo = array();
foreach($testArray as $value){
$foo[$value] = "text";
}
$oldJSON = file_get_contents("json/test.json");
$tempArray = json_decode($oldJSON, true);
//array_push($tempArray, $foo); // Tried this and it adds a new array
//$tempArray[$testDate] = $foo; //This just replaces the old keys with new ones.
array_merge($tempArray[$testDate], $foo); //And with this one, nothing happens.
$jsonData = json_encode($tempArray);
file_put_contents("json/test.json");
?>
$_POST['javascript_array_string']
看起来像1:1,1:2,1:3
任何帮助表示赞赏!
更新:已添加var_dump($tempArray)
以及$testDate
array(2) { ["23-06-2017"]=> array(3) { ["2:17"]=> string(4) "ille" ["2:18"]=> string(4) "ille" ["2:19"]=> string(4) "ille" } ["24-06-2017"]=> array(1) { ["1:17"]=> string(4) "ille" } }
和$ testDate的值为24-06-2017
更新#2:所以要澄清并帮助您了解我正在尝试做什么..
我想要这些新的(唯一)键和相应的值:$foo
与现有的JSON对象合并:$tempArray
这样
{
"24-06-2017":{
"1:1":"text"
}
}
变为
{
"24-06-2017":{
"1:1":"text",
"1:2":"newValue",
"1:3":"anotherValue"
}
}
答案 0 :(得分:0)
array_merge
创建一个新的合并数组。如果要修改其中一个源数组,则必须分配array_merge
的结果。
$tempArray[$testDate] = array_merge($tempArray[$testDate], $foo);
示例:
<?php
$testArray = [
"24-06-2017" => [
"1:1" => "text"
]
];
$foo = [
"1:2" => "text",
"1:3" => "text"
];
$testArray['24-06-2017'] = array_merge($testArray['24-06-2017'], $foo);
var_dump($testArray);
输出:
array(1) {
["24-06-2017"]=>
array(3) {
["1:1"]=>
string(4) "text"
["1:2"]=>
string(4) "text"
["1:3"]=>
string(4) "text"
}
}