我这里有个小问题:
我想要展示的是:
{"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"}
}
一开始,我有一个简单的空数据库行,没有任何内容。然后我想运行这个脚本:
$accountff["accounts"] = array( 'n' => 1002,
'd' => 2018-07-02,
'u' => ,
'e' => ,
'r' => );
$txid_json = json_encode($accountff, JSON_FORCE_OBJECT);
这可以很好地工作,输出是:
{"accounts":{"n":1002,"d":"2018-07-02","u":"","e":"","r":""}}
但是每次我想用这个脚本添加一个新的“帐户”时:
$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的列。)
输出为:
{"accounts":{"n":1002,"d":"2018-07-02","u":"","e":"","r":"","0":{"n":1002,"d":"2018-07-02","u":"","e":"","r":""}}}
这真的让我抓狂。我不知道"0“是从哪里来的。
发布于 2018-07-03 04:12:42
您显示的内容不是有效的JSON。对象中的所有内容都必须是key: value
对,但是除了第一个键之外,没有对象的键。
看起来您确实希望accounts
属性是一个帐户数组,因此它应该是:
$accountff["accounts"] = array(
array( 'n' => 1002,
'd' => 2018-07-02,
'u' => ,
'e' => ,
'r' => )
);
然后,要添加新帐户,您需要执行以下操作:
$accountff["accounts"][] = $account;
相当于:
array_push($accountff["accounts"], $account);
JSON将如下所示:
{"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
,它将如下所示:
{"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"}
}
}
https://stackoverflow.com/questions/51142772
复制相似问题