具有相同情况的开关

时间:2012-04-16 01:17:28

标签: php

我正在尝试创建一个基本上拉取视频流并按观众计数组织它们的页面,以便视图最多的页面位于页面顶部。

我对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语句替换它,但同样的事情发生了。

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:1)

哇哇哇哇哇废弃这一切。您应该做的更像是,每个流应该有一个数据库记录。每当有人查看流时,数据库记录中的列应作为视图计数器递增。然后,在数据库表中为此列添加索引,当您从数据库中提取流以列出它们时,只需按SQL查询中的视图数列进行排序。 ORDER BY viewCounter

答案 1 :(得分:0)

编辑:只有在您无法按正确的顺序获取视频时才能执行此操作!

为什么不这样做一个关联的数组:array($video2 => $viewers1, $video2 => $viewers2)然后你可以按值排序。然后,您可以使用arsort(),只需从数组中读取视频键即可处理重新排序。