我有一个来自解码JSON的多维数组。我可以穿过数组并完美地回显每个元素。
但是我无法让我的Array元素过度写入JSON文件中的元素。
有趣的是,我可以回应它,它是字符串类型,我可以在“引号”之间写一个硬编码的字符串到JSON文件。
当我尝试写入文件时,现有的JSON值将被删除,并保留为一对空白引号“”。不是整个文件。只是我瞄准的确切元素。
我想它可能与数组的范围有关?
foreach($data['Main'] as $sceneItem){
$count = 0;
//iterate over each element in every sceneItem looking for a matching field
if(isset($sceneItem['Values'])){
if(in_array($sceneItem['Values'], $template_fields)){
//dd($user_input[$sceneItem['Values']]); //outputs desired string I'd like to put in JSON
$data['Main'][$count]['Values'] = $user_input[$sceneItem['Values']];
$count++;
}
}
}
JSON示例:
{
"Header": {
"Project": "SchhhhriptTitle.aep"
},
"Main": [
{
"Title": "Text",
"Comp": "Scene 1 - Introduction",
"CompID": 40,
"Name": "Company name ",
"Layer": 1,
"Values": "sc1txt2",
"Font": "basictitlefont",
"FontSize": 154,
"FillColor": [
0.95686000585556,
0.95686000585556,
0.95686000585556
]
},
{
"Title": "Text",
"Comp": "Scene 1 - Introduction",
"CompID": 40,
"Name": "Introducing",
"Layer": 3,
"Values": "sc1txt1",
"Font": "basictitlefont",
"FontSize": 154,
"FillColor": [
0.95686000585556,
0.95686000585556,
0.95686000585556
]
},
我认为你应该使用php foreach使用引用,如:
foreach($data['Main'] as &$sceneItem){
这样你就不需要拥有$ count变量(你在每次迭代时重置,而不是在开始时重置)。这样做,而不是:
$data['Main'][$count]['Values'] = $user_input[$sceneItem['Values']];
你可以有
$sceneItem['Values'] = $user_input[$sceneItem['Values']];