我最近一直在使用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页[echos 15个主题]和3个[echos 10个主题]时,它完美地工作,但当我尝试显示第2页时,它回显25个线程而不是15个..
有什么想法吗?
答案 0 :(得分:1)
正如Barmar在评论中指出的那样,array_slice()
的第三个参数是切片的长度,而不是结束索引。
来自array_slice()
文档:
如果给出长度并且是正数,那么序列中将包含多个元素。如果数组短于长度,则仅存在可用的数组元素。如果给定长度并且为负,则序列将停止来自数组末尾的许多元素。如果省略,那么序列将包含从偏移到数组结束的所有内容。
因此,请将array_slice()
语句更改为以下内容:
$thread_order = array_slice($thread_order_P, $start_f_value, $threads_per_page);