【发布时间】:2018-11-05 16:52:10
【问题描述】:
我有一个包含枚举数字的数组,例如:
$pageNumbers = array(1,2,3,4,5,6,7,8,9,10);
现在我有一个活动页码 $currentPage 并希望基于此,前后 2 个元素 - 总数为 5。
$currentPage = 2:
返回:array(1,2,3,4,5)
$currentPage = 6
返回:array(4,5,6,7,8)
$currentPage = 10
返回:array(6,7,8,9,10)
不幸的是,我没有想出一个优雅而简单的方法来解决这个问题(2x while,1 big foreach 等等)。也许你有一个想法。
我的第一个想法是:
foreach ($pageNumbers as $page) {
if($page < $currentPage+3 && $page > $currentPage-3) {
array_push(...);
}
}
这适用于$currentPage = 6,但如果是$currentPage = 1,它只会返回1,2,3。
【问题讨论】:
-
尽管如此,请展示你所拥有的。正在工作吗?出了什么问题?
-
array_search和array_splice可以正常工作。 -
你有没有考虑找到当前页面的索引,然后修剪两边的数组?
-
谢谢@Jeff,我添加了我的试用版。
-
range($start,$end)然后是一点点数学运算,并检查第一页和最后一页,