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>";
}
みたいにね。