0

重複の可能性:
ネストされたjsonからphp検索リスト

私はいくつかのJSONを解析しようとしていますが、現在すべてを1つのページで解析していますが、1つのページに配置するには情報が多すぎるため、親オブジェクトを「教会」にリストし、次に親をリストすることでフィルタリングできるようにしたいと考えています。クリックすると、子(ネストされた)オブジェクトの「トラック」が一覧表示されます(基本的にJSONでフィルタリングします)、(iPodでArtist(「教会」)をクリックしてからアルバム(これはは「アルバム」で、次にトラック(jsonでは「トラック」)です。

では、親オブジェクトを次のレベルのJSONを解析するリンクにするにはどうすればよいですか?

http://ggcc.tv/JSON_Parsers/Music.phpにアクセスして、これまでの内容を確認できます。

助けてください、ありがとう。

PHP:http://www.godsgypsychristianchurch.net/music.json'; $ content = file_get_contents($ filepath); $ json = json_decode($ content、true);

    $count = 0;
    foreach ($json['rows'] as $row) {
        ++$count;

        echo "<h1>Row: {$count}</h1>";
        echo "Album: {$row[doc]['album']}<br />";
        echo "Church: {$row[doc]['church']}<br />";
        echo "Description: {$row[doc]['des']}<br />";
        echo "<img src=\"{$row['doc']['artwork']}\" alt=\"my image \" width=\"250\" /><br /><br />";

        $songCount = 0;
        foreach ($row['doc']['tracks'] as $song) {
            ++$songCount;
            echo $song['name'] . ' - ';

            $songUrl = $row['doc']['baseurl'] . urldecode($song['url']);
            echo "<a href=\"{$songUrl}\">{$songUrl}</a><br />";
        }
        echo '<br /><br />';
    }

    exit;
?>

JSON(http://www.godsgypsychristianchurch.net/music.json):

{"total_rows":1,"offset":0,"rows":[

              {"id":"All Things Are Possible",
"key":"All Things Are Possible",
"doc":{"_id":"All Things Are Possible",
"album":"All Things Are Possible",
"artwork":"http://godsgypsychristianchurch.net/music_artwork/DEFAULT_COVER2.png",
"baseurl":"http://www.godsgypsychristianchurch.net/music",
"church":"Atlanta GA",
"cityartwork":"http://www.ggcc.tv/LogoNE.png",
"des":"All Things Are Possible from the Atlanta GA Church, Pastor Nick White",
"tracks":[
    {"name":"1 Intro",
        "url":"/Atlanta%20GA/All%20things%20are%20possible/01%20Intro.mp3"},

            {"name":"2 Wo si O Drom",
        "url":"/Atlanta%20GA/All%20things%20are%20possible/02%20Wo%20si%20O%20drom.mp3"},

            {"name":"3 Nas Murrgo Shov",
        "url":"/Atlanta%20GA/All%20things%20are%20possible/03%20Nas%20murrgo%20shov.mp3"},

            {"name":"4 To Cho Vos",
        "url":"/Atlanta%20GA/All%20things%20are%20possible/04%20To%20cho%20vos.mp3"},

            {"name":"5 Tu Son Kai Sastridas",
        "url":"/Atlanta%20GA/All%20things%20are%20possible/05%20Tu%20son%20kai%20sastridas.mp3"},

            {"name":"6 Now I Am Strong",
        "url":"/Atlanta%20GA/All%20things%20are%20possible/06%20Now%20I%20am%20strong.mp3"},

            {"name":"7 Sorr Nevee",
        "url":"/Atlanta%20GA/All%20things%20are%20possible/07%20Zorr%20nevee.mp3"},

            {"name":"8 Preaching",
        "url":"/Atlanta%20GA/All%20things%20are%20possible/08%20Preaching.mp3"},

            {"name":"9 Arkadyan Amey",
        "url":"/Atlanta%20GA/All%20things%20are%20possible/09%20Arkadyan%20amey.mp3"},

            {"name":"10 O Christo Ka Wudarr",
        "url":"/Atlanta%20GA/All%20things%20are%20possible/10%20O%20Christo%20ka%20wudarr.mp3"},

            {"name":"11 Eloi, Eloi",
        "url":"/Atlanta%20GA/All%20things%20are%20possible/11%20Eloi%2C%20Eloi.mp3"},

            {"name":"12 Amadow Dell",
        "url":"/Atlanta%20GA/All%20things%20are%20possible/12%20Amadow%20Dell.mp3"},

            {"name":"13 Sastiar Amey Devla",
        "url":"/Atlanta%20GA/All%20things%20are%20possible/13%20Sastiar%20amey%20Devla.mp3"},

            {"name":"14 Tu Skepeese",
        "url":"/Atlanta%20GA/All%20things%20are%20possible/14%20Tu%20skepeese.mp3"},

            {"name":"15 Dov Ma Godgee",
        "url":"/Atlanta%20GA/All%20things%20are%20possible/15%20Dov%20ma%20godgee.mp3"},

            {"name":"16 The Lord is my strength",
        "url":"/Atlanta%20GA/All%20things%20are%20possible/16%20The%20Lors%20is%20my%20strength.mp3"}
  ]}},
4

1 に答える 1

1

教会を音楽にリンクしたいとします。最初に教会名をループして、配列に入れ、重複を排除し、印刷して、次のようにリンクします。

$churches = array();

foreach ($json['rows'] as $row)
{
    if (!in_array($row[doc]['church'], $churches))
        $churches[] = $row[doc]['church'];
}

foreach ($churches as $church)
{
    print '<a href="getchurchmusic.php?churchname=' . urlencode($church) . '><br />' . htmlentities($church) . '</a>'; }
}

次に、 getchurchmusic.php で、現在行っていることを行いますが、教会でフィルタリングします

    foreach ($json['rows'] as $row)
    {
            if ($_GET['churchname'] == $row[doc]['church'])
            {
                    /* print out songs or whatever */

            }
    }

これはテストされていません。これは効率的ではありません。このデータはすべてデータベースに配置し、ファイルをキャッシュする必要があります。XSS フリーではありません。出発点を提供するための大まかなコードです。

于 2012-11-12T18:42:41.120 に答える