クライアント側で、DB から 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
}
}
明らかな解決策の 1 つは、分割せずに json 全体を保存することです。ただし、データベースに関しては賢明ではないようです。各ドキュメントに個別にアクセスできるようにしたい。使用して
$jsonobj = array ($key => json_decode($row["json"]));
明らかに機能しますが、残念ながら1つのキーだけです...
編集:明確化のために* phpで:違いがあります
array("a", "b", "c")
と
array ("1" => "a", "2" => "b", "3" => "c").
後者は、この $array["1"] = "a" のように実行すると、 array("1" => "a" )ではなくarray("a") になります。
ここで回答