我正在试图弄清楚如何确定哪个页面链接显示在列表清单的底部。说我有90页的结果。我希望有一个链接到第1页和第90页,如果可能的话,总是在当前页面左右3-4页。
[] - 表示当前页面
第1页: [1] 2 3 4 5 6 7 8 9 ... 90
第2页: 1 [2] 3 4 5 6 7 8 9 ... 90
第20页: 1 ... 17 18 19 [20] 21 22 23 ... 90
我无法弄清楚逻辑。因此,输入:total_number页面和当前页面,生成要显示的页面列表。我正在使用perl,但另一种语言的例子也可以。
答案 0 :(得分:0)
这样的事情应该适合你。
use strict;
use warnings;
use feature 'say';
use constant MARGIN => 3;
say join ', ', page_numbers(2, 90);
say join ', ', page_numbers(30, 90);
say join ', ', page_numbers(88, 90);
sub page_numbers {
my ($this, $total) = @_;
my $min = $this <= MARGIN + 1 ? 2 : $this - MARGIN;
my $max = $this >= $total - (MARGIN + 1) ? $total - 1 : $this + MARGIN;
return 1, $min..$max, $total;
}
<强>输出强>
1, 2, 3, 4, 5, 90
1, 27, 28, 29, 30, 31, 32, 33, 90
1, 85, 86, 87, 88, 89, 90