我有一个简单的html表单,它调用php脚本来创建或更新包含json脚本的文件。
我的HTML代码,
<form name="inputs" method="post" action="parameters.php">
Provide template name: <input type="text" name="templatename"><br>
Which type? <select name="type"> <option value="abc">abc</option> <option value="def">def</option> <option value="ghi">ghi</option> </select><br>
What name? <input type="text" name="name"><br>
<input type="submit" name="Submit" value="submit">
</form>
这是parameters.php,
<?php
class Templates {
public $templatename = "";
public $type = "";
public $name = "";
}
$mytemplate = new Templates();
$mytemplate->templatename = $_POST['templatename'];
$mytemplate->type = $_POST['type'];
$mytemplate->name = $_POST['name'];
$data = json_encode($mytemplate);
$templates = file_get_contents('users.txt');
$templates = json_decode($templates);
array_push($templates, $data);
$fh = fopen("users.txt", "a");
fwrite($fh, $templates);
fclose($fh);
?>
这给了我以下输出,
{"templatename":"1","type":"abc","name":"abc123"}{"templatename":"2","type":"def","name":"def123"}
生成的json语法错误。如何将新的json元素添加到预先存在的json元素中,如何在没有以前的json元素时添加新的json元素?
答案 0 :(得分:0)
您需要将文件中已存在的信息读入内存json_decode()
,然后将新对象添加到对象数组json_encode()
,并覆盖该文件。
对于这种情况,您的数据结构可能是一个对象数组。
目前,您的代码只会尝试将一系列json编码的对象添加到文件中,使其无法获得整个文件的有效JSON。
我想说如果你希望你的JSON表示能够显着增长,那么处理这个问题的方法效率很低。您可能想要考虑不同类型的持久性。