0

私はからのアウトソーシングデータを持っています:

http://example.com/data/news.json

デコード後の結果の例を次に示します。

Array
(
    [popular] => Array
        (
            [last_week] => Array
                (
                    [0] => Array
                        (
                           [title] => Business 1
                            [category] => blog/business/local
                        )
                    [1] => Array
                        (
                        [title] => Health 1
                        [category] => blog/health/skincare
                    )
                [2] => Array
                    (
                        [title] => Business 2
                        [category] => blog/business/local
                    )
                [3] => Array
                    (
                        [title] => Health 2
                        [category] => blog/health/skincare
                    )
            )
    )

)

私はそれを表示するために次の方法を使用しています:

$url = 'http://example.com/data/news.json';
$json = file_get_contents($url);
if(!empty($json)) {
$json_data = json_decode($json, true);
$popular_last_week = $json_data['popular']['last_week'];
$count = count($popular_last_week);
$result .= $count.' last week popular article' . "\n";
for ($i = 0;  $i <$count; $i++) {
$result .= 'Title : '.$popular_last_week[$i]['title'] . "\n";
$result .= 'Category : '.$popular_last_week[$i]['category'] . "\n\n";
}
echo $result;
}

出力データは次のとおりです。

先週の人気記事4件

タイトル:ビジネス1
カテゴリー:ブログ/ビジネス/ローカル

タイトル:健康1
カテゴリー:ブログ/健康/スキンケア

タイトル:ビジネス2
カテゴリー:ブログ/ビジネス/ローカル

タイトル:健康2
カテゴリー:ブログ/健康/スキンケア

問題は、次のように出力を表示する方法です。

先週人気のビジネス記事2件

タイトル:ビジネス1
カテゴリー:ビジネス

タイトル:ビジネス2
カテゴリー:ビジネス

先週人気の健康記事2件

タイトル:健康1
カテゴリー:健康

タイトル:健康2
カテゴリー:健康

助けていただければ幸いです!ありがとうございました。

4

2 に答える 2

3
$url = 'http://example.com/data/news.json';
$json = file_get_contents($url);
if(!empty($json)) {
    $json_data = json_decode($json, true);
    $popular_last_week = $json_data['popular']['last_week'];

    //  This loop will group all entries by category.
    $categories = array();
    foreach ($popular_last_week as $item) {
        $categories[$item['category']][] = $item['title'];
    }

    //  This loop will echo the titles grouped by categories.
    foreach ($categories as $category => $titles) {
        $result = count($titles) . ' popular in "' . $category . '"' . "\n";
        foreach ($titles as $title) {
            $result .= 'Title: ' . $title . "\n";
        }
        echo $result;
    }
}
于 2012-06-16T06:55:14.303 に答える
0

2つのアイテムだけを表示したいということですか?forループを使用する必要があります。

for ($i = 0;  $i < 2; $i++) {
    # display for $i
}

アップデート:

ああ、わかったと思います。foreachループを使用して、 2 回ループする必要があります。

$categoryItems = array();
foreach ($popular_last_week as $item) {
    $categoryItems[$item['category']][] = $item['title'];
}
foreach ($categoryItems as $category => $items) {
    $result .= count($items) . ' popular in category ' . $category;
    foreach ($items as $item){
        $result .= 'Title: ' . $item['title'] . "\n";
    }
}
echo $result;
于 2012-06-16T06:54:34.670 に答える