2

有効な Json 形式の文字列があり、次のようになります。

{
    "message": "success",
    "result": {
        "46620": {
            "course_id": "29",
            "en_title": "Google Analytics (Basic)",
            "fa_title": "مبانی گوگل آنالیتیکز",
            "badge_link": "http://www.darsnameh.com/badge/index.php?user=46620&badge="
        },
        "49449": {
            "course_id": "16",
            "en_title": "Multimedia Reporting 1- Reporting in the Internet Age",
            "fa_title": "گزارش‌گری چندرسانه‌ای ۱- گزارشگری در زمانه‌ی اينترنت",
            "badge_link": "http://www.darsnameh.com/badge/index.php?user=49449&badge="
        },
        "55480": {
            "course_id": "33",
            "en_title": "HTML for Journalists and Bloggers",
            "fa_title": "آشنایی با اچ‌تی‌ام‌ال Ùˆ Ùناوری‌های اینترنت برای روزنامه‌نگاران Ùˆ وبلاگ‌نویس‌ها",
            "badge_link": "http://www.darsnameh.com/badge/index.php?user=55480&badge="
        },
        "59250": {
            "course_id": "31",
            "en_title": "Twitter",
            "fa_title": "توییتر",
            "badge_link": "http://www.darsnameh.com/badge/index.php?user=59250&badge="
        },
        "103716": {
            "course_id": "42",
            "en_title": "How to write a CV?",
            "fa_title": "چگونه رزومه بنویسیم؟",
            "badge_link": "http://www.darsnameh.com/badge/index.php?user=103716&badge="
        }
    }
}

たとえば、すべての fa_titles など、さまざまなフィールドを読み取りたい場合は、 $obj = json_decode($str, true); を使用します。これを Json に変換するには、echo sizeof($obj['result']); 5 つの結果オブジェクトがあることを示していますが、現在 fa_title または en_title フィールドにアクセスするにはどうすればよいですか?

4

2 に答える 2

3

すべての結果をループするには、次のようにする必要があります。

$obj = json_decode($str);
foreach ($obj->result as $result)
{
    $fa_title = $result->fa_title;
    $en_title = $result->en_title;
}
于 2012-07-31T16:05:05.040 に答える
2

JSON では、配列は角かっこ ( と ) で指定されますが[、辞書には中かっこ (と)]しかありません。{}

を実行することで、各結果オブジェクトに個別にアクセスできます$obj['result']['46620']['en_title']。結果オブジェクトは、連想配列の連想配列 (ディクショナリとも呼ばれます) です。

この質問foreachで示されているように、ループを使用して各オブジェクトを反復処理することもできます

于 2012-07-31T16:05:30.957 に答える