我有一些基本代码,可以从上一页的表单中获取结果,并将其编码为文本文件。由于某种原因,它会对其进行正确的编码,然后生成另一个仅包含空值的数组。
(每个数组中的值数量相同)
老实说,我不知道是什么原因造成的。
这是编码代码:
<?php
$name = $_POST['name'];
$email = $_POST['email'];
$date = $_POST['date'];
$destination = $_POST['destination'];
$msg = $_POST['msg'];
//TODO the file write here VV, use 'a' instead of 'w' too ADD to the file instead of REWRITING IT.
$arr = [$name,$email,$date,$destination,$msg];
$write = json_encode($arr);
echo $write;
$file = fopen('data.txt', 'a');
fwrite($file, $write);
fclose($file);
// echo $arr[];
?>
这是.txt文件中的结果:
["Simon","example@example.com","0101-01-01T01:01","Ohio","Message here"][null,null,null,null,null]
(如果有帮助,它将写在同一行上)
我不想在这里使用此null数组,因为它会弄乱我需要做的一些事情。有什么想法吗?
答案 0 :(得分:1)
问题与json_encode无关。您将收到两个单独的POST请求-一个带有适当数据的POST请求,随后一个没有任何数据的请求,这些请求将作为空值附加到文件中。您需要在客户端调试为什么要发送两个请求
答案 1 :(得分:0)
您需要检查是否定义了帖子值:
<?php
if (isset($_POST['name'])
&& isset($_POST['email'])
&& isset($_POST['date'])
&& isset($_POST['destination'])
&& isset($_POST['msg'])) {
$name = $_POST['name'];
$email = $_POST['email'];
$date = $_POST['date'];
$destination = $_POST['destination'];
$msg = $_POST['msg'];
//TODO the file write here VV, use 'a' instead of 'w' too ADD to the file instead of REWRITING IT.
$arr = [$name,$email,$date,$destination,$msg];
$write = json_encode($arr);
var_dump( $write);
$file = fopen('data.txt', 'a');
fwrite($file, $write);
fclose($file);
// echo $arr[];
}
?>