+ -
当前位置:首页 → 问答吧 → 仿豆瓣分页导航

仿豆瓣分页导航

时间:2011-04-16

来源:互联网

  1. #!/usr/bin/perl
  2. #==========================================================================
  3. #         FILE:  page.pl
  4. #       AUTHOR:  YOUR NAME (),
  5. #      VERSION:  1.0
  6. #      CREATED:  2011/4/15 21:24:09

  7. use strict;
  8. use warnings;
  9. my ($page, $current) = @ARGV;

  10. my @page = $current-4..$current+4;

  11. #left
  12. if ($current - 1 < 10) {
  13.         my $l_r = ($current+4 >9)?$current+4:9;
  14.         @page = 1..$l_r;
  15. }
  16. else {
  17.         unshift @page, 1,2,0;

  18. }
  19. #right
  20. if ($page-$current < 10) {
  21.         pop @page for (1..9);
  22.         my $r_l = ($page-$current > 4)?$current-4:$page-8;
  23.         push @page, $r_l..$page;
  24. }
  25. else {
  26.         push @page, 0,$page-1,$page;
  27. }
  28. # when page < 10
  29. @page = grep {$_ >= 0} @page;
  30. print join ',', @page;
复制代码
算法不好,勉强实现了功能,有没有简单点的实现方式?

作者: infernor   发布时间: 2011-04-16



QUOTE:
算法不好,勉强实现了功能,有没有简单点的实现方式?
infernor 发表于 2011-04-16 00:06




    这种一般用数据库的SQL语句limit N,M来做。

作者: 兰花仙子   发布时间: 2011-04-16