2

基本的にビデオ ストリームをプルし、視聴者数で整理するページを作成しようとしています。これにより、最も多くのビューがページの上部に表示されます。

私は PHP にかなり慣れていないので、私が行った方法は非常に非効率的で時間がかかりますが、知っておくべき主なことは、ネストされたスイッチを使用することです。

これは、すべてのビデオの視聴者数が 0 を超える場合に完全に機能します。私の問題は、2 つのビデオの視聴者数が同じ場合に発生します。これが発生すると、すべてのストリームは元の順序を保持します。

これは、問題の原因となっているコードの一部を削除したバージョンです。

$viewarray = array($viewers1, $viewers2, $viewers3, $viewers4);

rsort($viewarray, SORT_NUMERIC);

for ($z=0; $z<=3; $z++)
{
if ($viewarray[$z] == 0) {break;}
switch($viewarray[$z]) 
{   
    case $viewers1:
        switch($z)
        {
            case 0:
                //code which implements the re-ordering
            case 1:
            case 2:
            case 3:
        }
        break;
    case $viewers2:
        switch($z)
        {
            case 0:
            case 1:
            case 2:
            case 3:
        }
        break;
    case $viewers3:
        switch($z)
        {
            case 0:
            case 1:
            case 2:
            case 3:
        }
        break;
    case $viewers4: 
        switch($z)
        {
            case 0:
            case 1:
            case 2:
            case 3:
        }
        break;      
}
}

$viewarrayビューアー番号のリストを正しい順序で作成するようにソートされます。次に、スイッチはこれらの各数値を各ストリームの実際の視聴者数と照合して、一致するものを見つけます。

スイッチ引数が2つのケースに一致した場合、最初のケースを選択するだけだと思っていましたが、残念ながらそうではありませんでした。if 文に置き換えてみましたが、同じことが起こります。

どんな助けでも大歓迎です。

4

2 に答える 2

1

おっおっおっ。このすべてを廃棄します。あなたがしなければならないことは、各ストリームにデータベースレコードが必要です。誰かがストリームを表示するたびに、データベース レコードの列がビュー カウンターとしてインクリメントされる必要があります。次に、データベース テーブルのこの列にインデックスを追加します。データベースからストリームを取得して一覧表示するときは、SQL クエリのビュー列の数で並べ替えるだけです。ORDER BY viewCounter

于 2012-04-16T01:24:14.033 に答える
0

編集: 正しい順序でビデオを取得できない場合にのみ、これを行ってください!

このように関連付けられた配列を作成してみませんか。そうすれarray($video2 => $viewers1, $video2 => $viewers2)ば、値で並べ替えることができます。その後、arsort()を使用して、配列からビデオ キーを読み取るだけで、並べ替えを処理できます。

于 2012-04-16T01:24:21.557 に答える