- print_r: documentation ( source)
<?php
class Test
{
public $page = 1;
private $range = 4;
public function getNumbers($pagesCount)
{
$numbers = [];
$rangeL = $this->page - $this->range - 1;
if ($rangeL < 1) {
$rangeL = 1;
}
$rangeR = $rangeL + $this->range * 2 + 1;
if ($rangeR > $pagesCount) {
$rangeR = $pagesCount;
$rangeL = $pagesCount - $this->range * 2 + 1;
if ($rangeL < 1) {
$rangeL = 1;
}
}
if ($rangeL > 1) {
$numbers[] = 1;
if ($rangeL > 2) {
$rangeL++;
$numbers[] = false;
}
}
for ($i = $rangeL; $i <= $rangeR; $i++) {
$numbers[] = $i;
}
if ($rangeR < $pagesCount) {
if ($rangeR < $pagesCount - 2) {
$numbers[] = false;
} else {
$numbers[] = $pagesCount - 1;
}
$numbers[] = $pagesCount;
}
return $numbers;
}
}
$test = new Test;
$test->page = 88;
print_r($test->getNumbers(100));
$test->page = 7;
print_r($test->getNumbers(100));