1

YouTube から複数の動画を表示しようとしていますが、YouTube API を使用して情報を取得しています。

私はすべてが機能していますが、viewCountのビデオの表示を、最大数が最初になるように並べ替えたいと思います。

これを単純にデータベース システムに変換することもできますが、その場合は cron ジョブを実行する必要があります (問題ではありません。必要以上のコードを実行する余分な必要性を回避しようとするだけです)。

    $video = array(
        "id1",
        "id2",
        "id3",
    );

    foreach ($video as $key) {
        $api = "http://gdata.youtube.com/feeds/api/videos/$key?v=2&alt=json";

        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $api);
        curl_setopt($ch, CURLOPT_ENCODING, "");
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
        curl_setopt($ch, CURLOPT_TIMEOUT, 10);
        $yt = json_decode(curl_exec($ch));
        curl_close($ch);

        $title       = $yt->{'entry'}->{'title'}->{'$t'};
        $viewCount   = $yt->{'entry'}->{'yt$statistics'}->{'viewCount'};
        $length      = $yt->{'entry'}->{'media$group'}->{'yt$duration'}->{'seconds'};
        $numDislikes = $yt->{'entry'}->{'yt$rating'}->{'numDislikes'};
        $numLikes    = $yt->{'entry'}->{'yt$rating'}->{'numLikes'};
        $average     = $yt->{'entry'}->{'gd$rating'}->{'average'};
        $minutes     = sprintf("%0.2f", $length / 60);
        $seconds     = str_replace(".", ":", $minutes);

//What I've tried, doesn't work. With and without if statement and max (Shouldn't need both, but I need the if statement to display one format of the number is higher) but too avail it hasn't successfully worked.

        $views = 0;
        foreach ($viewCount as $maxViews) {
            $views = max($views,$maxViews);
            if ($maxViews > $views) {
                echo $views;
            } else {
                echo $viewCount;
            }
        }
     }

これは単純で、配列の値が数値ではなく、$viewCount 変数の各 foreach ループから数値が引き出されているためだと考えて、明らかに完全に調べてください。

誰かが私を助けて、これを正しく修正できることを願っています。

注: これは自分でコーディングしましたが、これは YouTube API であるため、自分でコードを使用することが許可されています。JSON の解析は、面倒な場合があります。特に YouTube の API では。

よろしく

4

0 に答える 0