PHP 数组切片奇怪的行为


PHP Array Slice weird behaviour

我最近一直在使用 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 个线程。

有什么想法吗?

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

array_slice()文档中:

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

因此,请将array_slice()语句更改为以下内容:

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

演示!