2012-04-16 28 views
2

我想創建一個頁面,基本上拉視頻流和組織他們的觀衆數,所以最多的意見是在頁面的頂部。交換機相同的情況

我對PHP相當陌生,所以我做這件事的方式效率極低,時間很長,但要知道的主要是我使用嵌套開關。

當每個視頻的觀看者數量不等於0時,此功能完美無缺。當兩個視頻具有相同數量的觀看者時,我的問題就出現了。發生這種情況時,所有流保留其原始順序。

這是導致問題的代碼段的精簡版本。

$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。 – 2012-04-16 14:08:18

0

編輯:只有這樣做,如果你不能以正確的順序獲取視頻!

爲什麼不做這樣的關聯數組:array($video2 => $viewers1, $video2 => $viewers2)然後您可以按值排序。然後您可以使用arsort(),只需讀取陣列中的視頻鍵以處理重新排序。

+0

這似乎可以工作,但我遇到了使用arsort()的問題。如果我使用它,然後嘗試再次通過它們的鍵調用該數組,它們仍將按照原始順序。我可以按照正確的順序獲取它的唯一方法是使用http://php.net/manual/en/function.arsort.php中的示例,該示例使用foreach循環。 如果我能得到的訂單是持久的,那麼我可以通過索引切換,但它不工作。 – 2012-04-16 14:09:59

相關問題