首页 > 解决方案 > 如何使用 PHP 将来自不同 html 页面的数据连续读取到 JSON 文件中的一个大括号中?

问题描述

我设法JSON使用PHP. 我是新来PHPJSON。我制作了一些 html 表单页面,我希望将登录的同一个人的数据保存在文件中的相同大括号中JSON。此外,我没有“父”和“子”类型的JSON文件,因为成员 ID 作为父,而姓名、年龄、性别等作为子。

例如,这是我在我的JSON文件(即member.json)中来自同一个人的两页 html 表单(即注册和选择票务页面)中的内容:

{
   "name": "iron man",
   "age": "54",
   "gender": "male",
   "email": "i@r.m",
   "username": "ironman",
   "Password": "ironman",
   "submit": "Submit"
}{
   "Journey_From": "Segambut",
   "Journey_To": "Kepong",
   "date": "2018-09-12",
   "time": "15:43",
   "Quantity": "3",
   "submit": "Proceed"
}

我不知道如何将来自同一个人的不同 html 形式的两个输入放入一个 {}

我希望它是这样的:

{
   "name": "iron man",
   "age": "54",
   "gender": "male",
   "email": "i@r.m",
   "username": "ironman",
   "Password": "ironman",
   "submit": "Submit"
   "Journey_From": "Segambut",
   "Journey_To": "Kepong",
   "date": "2018-09-12",
   "time": "15:43",
   "Quantity": "3",
   "submit": "Proceed"
}

我在两个 html 页面中都使用此代码将页面的输入发送到member.json文件。

 <?php
   if(isset($_POST['submit'])) {
      $file = "member.json";
      $json_string = json_encode($_POST, JSON_PRETTY_PRINT);
      file_put_contents($file, $json_string, FILE_APPEND); 
   }
 ?>

使用“死”代码后:

  array(7) { ["name"]=> string(4) "haha" ["age"]=> string(2) "34" ["gender"]=> string(4) "male" ["email"]=> string(5) "d@w.f" ["username"]=> string(4) "haha" ["Password"]=> string(4) "haha" ["submit"]=> string(6) "Submit" }

标签: phphtmljson

解决方案


你可以使用arary_merge()函数来完成它。json在将任何内容放在那里之前检查文件。如果那里有任何可用内容,您可以json_data将它们作为数组获取并将它们与当前内容合并。然后将新合并的数组推送到 json 文件中。您可以查看我的演示代码,了解我在说什么。

追加.php

<?php
function append($file, $new_json) {
    $file_content = file_get_contents($file);
    $previous_json = json_decode($file_content, true);

    $previous_json == null ? $previous_json = [] : $previous_json = $previous_json; 
    $new_data = array_merge($previous_json, $new_json);

    $json_string = json_encode($new_data, JSON_PRETTY_PRINT);
    file_put_contents($file, $json_string); 
}

然后在您插入数据的任何页面中,您只需像这样require的文件append.php

<?php 
    include_once 'append.php';
    if(isset($_POST['submit'])) {
        $file = "member.json";
        $newData = $_POST;
        append($file, $newData);
    }
?>

注意:您可以使用submit1andsubmit2来获取两个提交值。请检查此以了解有关array_merge http://php.net/manual/en/function.array-merge.php的更多信息


推荐阅读