json_encode创建第二个数组[null,null,null,null,null]

时间:2019-05-19 02:55:58

标签: php

我有一些基本代码,可以从上一页的表单中获取结果,并将其编码为文本文件。由于某种原因,它会对其进行正确的编码,然后生成另一个仅包含空值的数组。

(每个数组中的值数量相同)

老实说,我不知道是什么原因造成的。

这是编码代码:

<?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数组,因为它会弄乱我需要做的一些事情。有什么想法吗?

2 个答案:

答案 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[];
}
?>