首页 > 解决方案 > 如何将来自 hmtl 表单的值添加到保存为 json 的数组中?

问题描述

我需要将值添加到保存为具有以下结构的 Json 文件的数组中:

[
      ["1","16/10/1997","TLV","Leonardo","3","40","21","Some Name"],
      ["2","17/10/1997","TLV","Leonardo","6","42","21","Some Name"],
      ["3","17/10/1997","TLV","Leonardo","9","39","21","Some Name"]
]

新记录来自使用 Get 方法的 HTML 表单,因此我尝试了以下代码:

    <?php 
        if ($_SERVER['REQUEST_METHOD'] == 'GET') { 
            $NewDive[] = array( 
                $NewDive[0] = $_GET['TB_DID'],
                $NewDive[1] = $_GET['TB_DDate'],
                $NewDive[2] = $_GET['TB_DSite'],
                $NewDive[3] = $_GET['TB_DCenter'],
                $NewDive[4] = $_GET['TB_Depth'],
                $NewDive[5] = $_GET['TB_DTime'],
                $NewDive[6] = $_GET['TB_Oxygen'],
                $NewDive[7] = $_GET['TB_DBoddy']);
                 
            $file_name = 'test.json'; 
            file_put_contents("$file_name", json_encode($NewDive), FILE_APPEND);
        } 
    ?>

但我得到的附加记录的结果是这样的(双记录):

 ["4","20/10/1997","TLV","Leonardo","9","39","21","Some Name",["4","20/10/1997","TLV","Leonardo","9","39","21","Some Name"]]

我做错了什么?另外,将新记录添加到完整 Json 文件中的最佳方法是什么?

10x 雅科夫

标签: phparraysjson

解决方案


您不能附加 JSON。您需要读取文件,将 JSON 解码为数组,将新元素添加到数组中,然后将其写回。

此外,您不应该在推送到同一个数组的同时分配给单个数组元素。

    <?php 
        if ($_SERVER['REQUEST_METHOD'] == 'GET') { 
            $file_name = 'test.json';
            $contents = @file_get_contents($file_name);
            $NewDive = $contents ? json_decode($contents, true) : [];
            $NewDive[] = array( 
                $_GET['TB_DID'],
                $_GET['TB_DDate'],
                $_GET['TB_DSite'],
                $_GET['TB_DCenter'],
                $_GET['TB_Depth'],
                $_GET['TB_DTime'],
                $_GET['TB_Oxygen'],
                $_GET['TB_DBoddy']);
                 
            file_put_contents($file_name, json_encode($NewDive));
        } 
    ?>

推荐阅读