1

我有一个包含 Youtube 视频列表的页面。我使用下面的数组,然后在页面的后面我使用其他一些函数来显示页面下方视频的标题和屏幕抓取。这样,我只需在下面的列表中添加一个新视频,它就会从 YouTube 中获取所有正确信息:

//exampleX is a youtube video code
$videolist = array(
"example1",
"example2",
"example3",
"example4",
"example5"
);

随着时间的推移,这个列表已经增长到我需要为视频添加一些自动分页的地步,因为列表继续增长。我以前做过一次,所以我想我可以处理那部分。

然而,客户有一些视频无论如何都需要保持在同一页面上。我不确定如何处理那部分。

对此的任何想法将不胜感激。

谢谢,克里斯

4

3 回答 3

2

作为您已经拥有的内容的简单扩展,无需太多修改,请考虑将您的视频数组制作为多维数组,并使用一个键指示它应该保持在一起。keeptogether => TRUE在对它们进行分页时,如果您在页面列表的末尾遇到一个,而不是中断,继续循环输出直到到达下一个keeptogether => FALSE。(我还将建立将keeptogether键省略为FALSE值的能力)。

$videolist = array(
  array("title" => "example1", "keeptogether" => FALSE),  
  array("title" => "example2", "keeptogether" => FALSE),
  array("title" => "example3", "keeptogether" => TRUE),
  array("title" => "example4", "keeptogether" => TRUE),
  array("title" => "example5" "keeptogether" => FALSE)
);

如果您需要它在 a 出现在页面末尾时更优雅地工作keeptogether => TRUE,并且它应该在继续之前中断到下一页(因此当前页面不会变得太长),请考虑一个简单的算法,例如:

# Pseudocode:
# Encountering a keeptogether == TRUE when 2 from the end of a normal page length:
if current_page_counter < (num_per_page - 2) and keeptogether == TRUE
  break_to_next_page
else
  loop_until keeptogether == FALSE
于 2013-01-11T18:31:38.893 回答
1

也许在您的列表中,您可以按组对它们进行排序并按组分页。大多数组只有一个视频,但那些需要一起视频的组会有多个视频。像这样:

$videolist = array(
    "group1" => array("example1")
    "group2" => array("example2", "example3"),
    "group3" => array("example4"),
    "group4" => array("example5"),
);

所以不是按视频分页,而是按组分页,通常一个组有一个视频,但它可能有多个。

如果你也使用数据库来存储这些,你可以在那里复制这个结构。

于 2013-01-11T18:32:12.713 回答
0

您是否考虑过使用多维数组来存储视频?数组的每个元素都$videolist将包含一个视频数组。其中大多数只有一个元素,但需要组合在一起的元素将位于同一个数组中,如下所示:

$videolist = array(
    array("example1"),
    array("example2"),
    array("example3", "example4"),
    array("example5")
);

然后,在显示视频时,您可以执行以下操作:

$Offset = 1;
$PerPage = 2;
$Count = 0; $Displayed = 0;
foreach ($videolist as $videoarray) {
    foreach ($videoarray as $video) {
        $Count++;
        if ($Count <= $Offset) continue;

        $Displayed++;
        // Display Video
    }

    if ($Displayed >= $PerPage) break;
}

这样,页面直到当前组结束时才会结束。

你也可以改变它,所以你在迭代它之前做 a count()$videoarray如果它会把总数推过就中断$PerPage

于 2013-01-11T18:37:00.243 回答