開発メモ,主に補足by子連れ親父プログラマー

2011-08-01

JSON形式のつづき。DBからselectしたデータが連想配列になってるのでそのまま処理したい編。

なにはともあれ、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>";
    }
みたいにね。

このブログを検索

Powered by Blogger.

ラベル

php (17) jQuery (13) OSX (10) MySQL (8) Javascript (7) Postgres (7) port (7) apache (6) Java (3) Smarty (2) html (2) pear (2) FCKEditor (1) XAMPP (1) css (1) git (1) perl (1) ruby (1)

Facebookバナー