我正在尝试从数据库中重新创建JSON,用于客户端。不幸的是,JSON中的一些键是数字,在JavaScript中可以正常工作,但由于这个原因,PHP会将它们视为数字而不是关联数组。每个键都代表一个文档。让我给你展示:
PHP:
$jsonobj;
while ($row = mysql_fetch_assoc($ms)) {
$key = strval($row["localcardid"]);
$jsonobj[$key] = json_decode($row["json"]);
}
// $jsonobj ist still a numeric array
echo json_encode($jsonobj);
生成的 JSON 应该是这样的:
{
"0": {
"terd": "10",
"id": 0,
"text": "",
"pos": 1,
"type": 0,
"divs": [
{},
{}
],
"front": 1
}
"1": {
"terd": "10",
"id": 0,
"text": "",
"pos": 1,
"type": 0,
"divs": [
{},
{}
],
"front": 1
}
}
一种显而易见的解决方案是将整个JSON保存而不拆分它。然而,就数据库而言,这似乎不明智。我想能够单独访问每个文档。使用…
$jsonobj = array ($key => json_decode($row["json"]));
显然有效,但不幸的是只适用于一个键... 编辑:为了澄清* 在PHP中:有一些区别。
array("a", "b", "c")
并且
array ("1" => "a", "2" => "b", "3" => "c").
后者,如果像这样做$array["1"] = "a",结果是array("a")而不是array("1" => "a")
在这里回答了
array("a", "b", "c")
е’Ңarray ("1" => "a", "2" => "b", "3" => "c")
д№Ӣй—ҙеӯҳеңЁе·®ејӮгҖӮеҪ“еғҸиҝҷж ·$array["1"] = "a"
иҝӣиЎҢж“ҚдҪңж—¶пјҢеҗҺиҖ…зҡ„з»“жһңжҳҜarray("a")
иҖҢдёҚжҳҜarray("1" => "a")
гҖӮ - jcfrei