【问题标题】:Appending new object to an array existing in an external JSON file with PHP使用 PHP 将新对象附加到存在于外部 JSON 文件中的数组
【发布时间】:2014-10-21 16:43:19
【问题描述】:

第一次在这里发帖时遇到了一些问题,可能修复起来并不复杂。首先,我对 PHP 的经验极少,所以如果我遗漏了一些明显的东西或者我要求进一步澄清,我深表歉意。到目前为止,一切都是 HTML/JavaScript 的客户端。

我希望在我的申请中加入一个注册系统。它适用于物理治疗师程序,其中用户详细信息存储在 JSON 文件中。 (我知道有更好的选择)。

JSON 内容目前是这种格式:

{"users":[
    {
        "userid": "0",
        "password":"template",
        "physio": "test@test.com",
        "firstName":"template",
        "lastName":"template",
        "exerciseregime": {
            "exercisenumber":"5",
            "exercises":["2","1", "3", "5", "4"]
        }
    },
    {
        "userid": "1",      
        "password":"user",
        "physio": "UserPhysio@hotmail.co.uk",
        "firstName":"User",
        "lastName":"Physio",
        "exerciseregime": {
            "exercisenumber":"1",
            "exercises":["2"]

        }
    },

等等。我要做的是使用从表单中获取的详细信息,并以这种格式将它们添加到现有的用户数组中。

我目前使用的代码是

<?php
$file = "userjson.json";
$FirstName = $_POST["FirstName"];
$Surname = $_POST["Surname"];
$Password = $_POST["Password"];  
$Email = $_POST["email"];
$UserID = $_POST["UserID2"];

$json = json_decode(file_get_contents($file), true); 
$json["firstName"] = $FirstName;
$json["lastName"] = $lastName;
$json["password"] = $Password;
$json["physio"] = $Email;
$json["UserID"] = $UserID;



file_put_contents($file, json_encode($json));

?>

我在网站上找到了used a previous answer 来实现这个。详细信息将保存到 JSON 文件中,但格式不正确。不是以新用户的身份添加到现有数组中,而是在数组之后而不是在其中添加一个新对象。我将如何解决这个问题并在用户数组中创建一个新的“用户”?

另外,还有第二个问题,但不那么重要:我将如何在这个新对象中编写一个数组?我在尝试将“Exerciseregime”数组添加到对象时遇到了一些困难。

非常感谢您的帮助,并感谢您的考虑。

【问题讨论】:

    标签: php arrays json append


    【解决方案1】:

    编辑我的第一个代码不正确。我忘了指定一个 ID 并以“用户”数组为目标。

    试试这个:

    $json = json_decode(file_get_contents($file), true); 
    $nextid = sizeof($json['users']);
    $json['users'][$nextid]['firstName'] = $FirstName;
    $json['users'][$nextid]['lastName'] = $Surname;
    $json['users'][$nextid]['password'] = $Password;
    $json['users'][$nextid]['physio'] = $Email;
    $json['users'][$nextid]['UserID'] = $UserID;
    
    file_put_contents($file, json_encode($json));
    

    基本上每个用户在 JSON 数组中都有一个 ID 键。您还需要为新用户提供密钥。

    另外,底部有$lastName,顶部有$Surname。可能也想解决这个问题。我在底部添加了$Surname 以匹配顶部。

    回答你的第二个问题

    你基本上只是这样做:

    $json['users'][$nextid]['exerciseregime']['exercisenumber'] = 1;
    $json['users'][$nextid]['exerciseregime']['exercises'] = 2;
    

    【讨论】:

    • 太棒了,我刚刚添加了一个关于第一个代码如何不起作用的回复,现在这个精彩的演示感觉有点不合适,所以我删除了它。我能够从第一个示例到能够自己解决问题,但是没有你说的那么优雅!这非常有帮助,肯定会在我的截止日期前缩短几个小时,再次感谢!
    猜你喜欢
    • 2021-06-23
    • 1970-01-01
    • 2015-09-11
    • 2022-11-02
    • 2021-11-19
    • 1970-01-01
    • 2017-05-15
    • 1970-01-01
    • 2019-04-29
    相关资源
    最近更新 更多