php - 如何将来自 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 雅科夫
解决方案
您不能附加 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));
}
?>
推荐阅读
- oracle - Group BY 查询使用索引,但窗口函数查询不使用
- rhel - 同一用户的多个 VNC 会话
- yaml - Concourse Pipeline sh 的问题:build/public/maintenance-page/ci-setup-start.sh:权限被拒绝
- css - 当我将 {Overflow-X:hidden;} 添加到 html/body 时,它会导致 div 在父 div 内垂直滚动,我做错了什么?
- java - 获取的自定义 gradle 插件扩展字段值为 null
- ssl - Sqoop 如何使用 SSL 加密访问 MySQL
- powerbi - Power BI 范围查找
- php - Laravel 循环收集成小块
- c++ - 大整数的 Rsa 混淆
- python - 无法跳出内部 While 循环