2012-04-16 12 views
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文で置き換えようとしましたが、同じことが起こります。

ご協力いただければ幸いです。

答えて

1

whoa whoa whoa。この全体をスクラップしてください。あなたがしなければならないことは、もっとストリームのようなものです。各ストリームにはデータベースレコードが必要です。誰かがストリームを見るたびに、データベースレコードの列をビューカウンタとしてインクリメントする必要があります。データベーステーブルのこの列にインデックスを追加し、データベースからストリームを取得してリストするときは、SQLクエリのビュー数でソートするだけです。 ORDER BY viewCounter

+0

私はこれを将来もっと効率的にしようとするかもしれませんが、今はただのPHPに固執します。 –

0

編集:正しい順序で動画を取得できない場合は、この操作を行ってください。

関連付けられた配列を次のように設定しないでください。array($video2 => $viewers1, $video2 => $viewers2)次に値を並べ替えることができます。 arsort()を使用して、配列からビデオキーを読み取って並べ替えることができます。

+0

それはうまくいくようですが、私はarsort()の使用に問題があります。私はそれを使用する場合は、元の順序ではまだそれらのキーで配列を再度呼び出すようにしてください。私が正しい順序で取得できる唯一の方法は、foreachループを使用するhttp://php.net/manual/en/function.arsort.phpの例を使用することです。 私は永続的な注文を得ることができた場合、私はインデックスで切り替えることができますが、それは動作しません。 –

関連する問題