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已排序,以便它以正确的顺序创建观众编号列表。然后,交换机将这些数字中的每一个与每个流的实际观看者数量进行比较,以找到它匹配的那个。

我认为如果 switch 参数匹配 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 回答