首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >php从新数组追加到json数组

php从新数组追加到json数组
EN

Stack Overflow用户
提问于 2018-07-03 03:41:12
回答 1查看 44关注 0票数 -2

我这里有个小问题:

我想要展示的是:

代码语言:javascript
复制
{"accounts":
{"n":"1001","d":"2018-06-30","u":"","e":"","r":"123112"},
{"n":"1002","d":"2018-06-30","u":"","e":"","r":"123112"}, 
{"n":"1005","d":"2018-06-30","u":"","e":"","r":"123112"}
}

一开始,我有一个简单的空数据库行,没有任何内容。然后我想运行这个脚本:

代码语言:javascript
复制
$accountff["accounts"] = array( 'n' => 1002, 
                            'd' => 2018-07-02,
                            'u' => ,
                            'e' => ,
                            'r' => );

$txid_json = json_encode($accountff, JSON_FORCE_OBJECT);

这可以很好地工作,输出是:

代码语言:javascript
复制
{"accounts":{"n":1002,"d":"2018-07-02","u":"","e":"","r":""}}

但是每次我想用这个脚本添加一个新的“帐户”时:

代码语言:javascript
复制
  $account['n'] = $post_id;
  $account['d'] = date('Y-m-d');
  $mysqljson = json_decode($user_accounts,true);
  array_push($mysqljson['accounts'], $account); 
  $txid_json = json_encode($mysqljson, JSON_FORCE_OBJECT); 

(变量$user_accounts是保存JSON的列。)

输出为:

代码语言:javascript
复制
{"accounts":{"n":1002,"d":"2018-07-02","u":"","e":"","r":"","0":{"n":1002,"d":"2018-07-02","u":"","e":"","r":""}}}

这真的让我抓狂。我不知道"0“是从哪里来的。

EN

回答 1

Stack Overflow用户

发布于 2018-07-03 04:12:42

您显示的内容不是有效的JSON。对象中的所有内容都必须是key: value对,但是除了第一个键之外,没有对象的键。

看起来您确实希望accounts属性是一个帐户数组,因此它应该是:

代码语言:javascript
复制
$accountff["accounts"] = array(
    array( 'n' => 1002, 
            'd' => 2018-07-02,
            'u' => ,
            'e' => ,
            'r' => )
);

然后,要添加新帐户,您需要执行以下操作:

代码语言:javascript
复制
$accountff["accounts"][] = $account;

相当于:

代码语言:javascript
复制
array_push($accountff["accounts"], $account);

JSON将如下所示:

代码语言:javascript
复制
{"accounts": [
    {"n":"1001","d":"2018-06-30","u":"","e":"","r":"123112"},
    {"n":"1002","d":"2018-06-30","u":"","e":"","r":"123112"}, 
    {"n":"1005","d":"2018-06-30","u":"","e":"","r":"123112"}
    ]
}

如果您使用JSON_FORCE_OBJECT,它将如下所示:

代码语言:javascript
复制
{"accounts": {
    "0": {"n":"1001","d":"2018-06-30","u":"","e":"","r":"123112"},
    "1": {"n":"1002","d":"2018-06-30","u":"","e":"","r":"123112"}, 
    "2": {"n":"1005","d":"2018-06-30","u":"","e":"","r":"123112"}
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51142772

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档