JSON形式のつづき。DBからselectしたデータが連想配列になってるのでそのまま処理したい編。
で、selectしたデータのid列の値がキーになっているとなにかと便利な訳ですよ。
後から参照する時にidだけ分かれば一発ですから。
ということでデータが今phpでこんなになってるとします。
Array ( [4] => Array ( [id] => 4 [year] => 2012 [created] => 2011-07-26 19:37:37.985709 ) [7] => Array ( [id] => 7 [year] => 2011 [created] => 2011-07-27 16:43:11.697075 ) )こいつをJSON形式で出力したいってことです。
最終的にこんな形になればいいので、
{ "4": { "id": "4", "year": "2012", "created": "2011-07-26 19:37:37.985709" }, "7": { "id": "7", "year": "2011", "created": "2011-07-27 16:43:11.697075" } }昨日のファンクションを以下のように修正。
$json = "{".toJson($data)."}"; function toJson($data) { $json = array(); foreach ($data as $string => $value) { $key = "\"$string\":"; if (is_array($value)) { $json[] = sprintf("%s {%s}", $key, toJson($value)); } else { $json[] = sprintf("%s \"%s\"", $key, addslashes($value)); } } return implode(", ", $json); }こうすると、例えば返って来た json を javascript で例えば data とかいうオブジェクトに入れたとしたら、
data[4].yearとかで処理できる訳です。
var tbl=''; for (key in data) { tbl += '<tr><td>'+data[key].year+'</td></tr>"; }みたいにね。