php-根据范围键返回数组

时间:2018-11-05 16:52:10

标签: php arrays function

我有一个包含枚举数字的数组,例如:

$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个大foreach等等)。也许你有个主意。

我的第一个想法是:

foreach ($pageNumbers as $page) {
        if($page < $currentPage+3 && $page > $currentPage-3) {
            array_push(...);
        }
    }

这将适用于$currentPage = 6,但是如果使用$currentPage = 1,它将仅返回1,2,3

1 个答案:

答案 0 :(得分:2)

使用array_slice并切出所需的部分数组。

我使用if来查看将数组切片的位置。

if($currentPage < 3){
    $arr = array_slice($pageNumbers,0,5);
}elseif($currentPage > count($pageNumbers)-2){
    $arr = array_slice($pageNumbers,-5,5);
}else{
    $arr = array_slice($pageNumbers,$currentPage-3,5);
}

请参见下面的工作示例。
https://3v4l.org/fpOFQ