0

我最近一直在使用 array_slice 函数,以便在我的脚本中进行分页。

我有一个包含 40 个值的数组(每个值都是一个线程)

$thread_order_P = $this->forum_handler->orderThreads($forum_threads);

我想每页只显示 15 个线程,所以我做了以下操作:

$cu_page = $_GET['page'];
$threads_per_page = 15;
$start_f_value = $cu_page-1;
$start_f_value = $start_f_value*$threads_per_page;
$end_f_value = $threads_per_page*$cu_page;
$thread_order = array_slice($thread_order_P, $start_f_value, $end_f_value);

现在,问题是当我尝试显示第 1 页 [回声 15 线程] 和 3[回声 10 线程] 时,它工作得很好,但是当我尝试显示第 2 页时,它回显了 25 个线程而不是 15..

有任何想法吗?

4

1 回答 1

1

正如 Barmar 在评论中指出的那样,to 的第三个参数array_slice()是切片的长度,而不是结束索引。

array_slice()文档中:

如果给定长度并且为正数,则序列中将最多包含那么多元素。如果数组短于长度,则仅存在可用的数组元素。如果给定长度并且为负数,则序列将从数组末尾停止那么多元素。如果省略,则序列将包含从偏移量到数组末尾的所有内容。

因此,将您的array_slice()声明更改为以下内容:

$thread_order = array_slice($thread_order_P, $start_f_value, $threads_per_page);

演示!

于 2013-11-03T21:16:10.030 回答