为某些结果停止PHP分页

为某些结果停止PHP分页,php,pagination,Php,Pagination,我有一个页面,上面有Youtube视频列表。我使用一个数组,如下所示,然后在后面的页面中,我使用一些其他函数来显示页面下方视频的标题和屏幕抓取。这样,我只需在下面的列表中添加一个新的vidoe,它就能从YouTube获取所有正确的信息: //exampleX is a youtube video code $videolist = array( "example1", "example2", "example3", "example4", "example5" ); 随着时间的推移,随着列表的

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

//exampleX is a youtube video code
$videolist = array(
"example1",
"example2",
"example3",
"example4",
"example5"
);
随着时间的推移,随着列表的不断增长,我需要为视频添加一些自动分页。我以前做过一次,所以我想我能处理好那部分

但是,客户有一些视频需要在同一页面上保持一致,无论发生什么情况。我不知道该怎么处理那部分

如果您对此有任何想法,我们将不胜感激

谢谢,
克里斯

< P>作为一个简单的扩展,你已经拥有了,而不需要太多的修改,考虑把你的视频数组多维化,用一个键指示它应该保持在一起。分页时,如果您遇到一个页面列表末尾有
keeptogether=>TRUE
,则继续循环输出,直到到达下一个
keeptogether=>FALSE
。(我还可以将
keeptogether
键作为一个
FALSE
值省略)

如果你需要一个“代码”> KePoCuff= >Trime在页面的末尾发生,那么它应该在继续之前中断到下一页(因此当前页面不会太长),考虑一个简单的算法,如:

# 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
#伪代码:
#当距正常页面长度末尾2时,遇到keeptogether==TRUE:
如果当前页面计数器<(每个页面的数量-2)且keeptogether==真
断开至下一页
其他的
循环_直到keeptogether==FALSE

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

$videolist = array(
    "group1" => array("example1")
    "group2" => array("example2", "example3"),
    "group3" => array("example4"),
    "group4" => array("example5"),
);
因此,不是按视频分页,而是按组分页,通常一个组有一个视频,但它可以有多个视频


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

你考虑过使用多维数组来存储视频吗?
$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;
}
$Offset=1;
每页$2;
$Count=0$显示=0;
foreach($videolist作为$videoarray){
foreach($videoarray作为$video){
$Count++;
如果($Count=$PerPage)中断;
}
这样,页面直到当前组结束才结束


您也可以更改它,因此在迭代它之前先对
$videoarray
进行
count()
,如果它将总数推到
$PerPage

上,请查看“装箱”算法。需要放在同一页上的视频只需要“打包到同一个箱子中”。垃圾箱的大小将是每页视频的数量。可能是时候考虑一下“视频”的对象是否可以存储其他属性。例如,此属性表示他们“需要呆在一起”是。好主意!我喜欢这个方法,因为正如你所说,它不会对我现有的流程进行太大的修改。我将继续使用这个方法。谢谢!@ChrisCummings乐于帮助我发现了一个陷阱…这对我的处境不是问题,但对那些关注这个问题的人来说。如果1和2应该在一起,3和4应该在一起,但这是两个不同的组,它会将它们分组在一个页面上。如果使用此方法,可能希望在一个组的末尾为“breakk”创建另一个元素。只是一个想法……不过……它对我来说非常有用。
$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;
}