text: Q:
  
  PHP Array Pagination Limit No of links shown
  
  I am using the following pagination. PHP Array Paginator
  How can I limit the no of links shown to something like 10.
  What I require is by default if there are about 30 or 40 links it will show the whole no:
  1 | 2 3 4 5 6 7 8 9 11 ....... 35 36 37 38 39 (Here 1 is the selected page.)
  What I want is to show only 10 links in a page like this.
  Suppose the selected page is 13 then.
  << 6 7 8 9 10 11 12 | 13 | 14 15 >>
  I have posted the pagination class file below.
  class pagination
  {
  /**
   * Properties array
   * @var array   
   * @access private 
   */
  private $_properties = array();
  
  /**
   * Default configurations
   * @var array  
   * @access public 
   */
  public $_defaults = array(
    'page' => 1,
    'perPage' => 10 
  );
  
  /**
   * Constructor
   * 
   * @param array $array   Array of results to be paginated
   * @param int   $curPage The current page integer that should used
   * @param int   $perPage The amount of items that should be show per page
   * @return void    
   * @access public  
   */
  public function __construct($array, $curPage = null, $perPage = null)
  {
    $this->array   = $array;
    $this->curPage = ($curPage == null ? $this->defaults['page']    : $curPage);
    $this->perPage = ($perPage == null ? $this->defaults['perPage'] : $perPage);
  }
  
  /**
   * Global setter
   * 
   * Utilises the properties array
   * 
   * @param string $name  The name of the property to set
   * @param string $value The value that the property is assigned
   * @return void    
   * @access public  
   */
  public function __set($name, $value) 
  { 
    $this->_properties[$name] = $value;
  } 
  
  /**
   * Global getter
   * 
   * Takes a param from the properties array if it exists
   * 
   * @param string $name The name of the property to get
   * @return mixed Either the property from the internal
   * properties array or false if isn't set
   * @access public  
   */
  public function __get($name)
  {
    if (array_key_exists($name, $this->_properties)) {
      return $this->_properties[$name];
    }
    return false;
  }
  
  /**
   * Set the show first and last configuration
   * 
   * This will enable the "<< first" and "last >>" style
   * links
   * 
   * @param boolean $showFirstAndLast True to show, false to hide.
   * @return void    
   * @access public  
   */
  public function setShowFirstAndLast($showFirstAndLast)
  {
      $this->_showFirstAndLast = $showFirstAndLast;
  
  }
  
  /**
   * Set the main seperator character
   * 
   * By default this will implode an empty string
   * 
   * @param string $mainSeperator The seperator between the page numbers
   * @return void    
   * @access public  
   */
  public function setMainSeperator($mainSeperator)
  {
    $this->mainSeperator = $mainSeperator;
  }
  
  /**
   * Get the result portion from the provided array 
   * 
   * @return array Reduced array with correct calculated offset 
   * @access public 
   */
  public function getResults()
  {
    // Assign the page variable
    if (empty($this->curPage) !== false) {
      $this->page = $this->curPage; // using the get method
    } else {
      $this->page = 1; // if we don't have a page number then assume we are on the first page
    }
  
    // Take the length of the array
    $this->length = count($this->array);
  
    // Get the number of pages
    $this->pages = ceil($this->length / $this->perPage);
  
    // Calculate the starting point 
    $this->start = ceil(($this->page - 1) * $this->perPage);
  
    // return the portion of results
    return array_slice($this->array, $this->start, $this->perPage);
  }
  
  /**
   * Get the html links for the generated page offset
   * 
   * @param array $params A list of parameters (probably get/post) to
   * pass around with each request
   * @return mixed  Return description (if any) ...
   * @access public 
   */
  public function getLinks($params = array())
  {
    // Initiate the links array
    $plinks = array();
    $links = array();
    $slinks = array();
  
    // Concatenate the get variables to add to the page numbering string
    $queryUrl = '';
    if (!empty($params) === true) {
      unset($params['page']);
      $queryUrl = '&amp;'.http_build_query($params);
    }
  
    // If we have more then one pages
    if (($this->pages) > 1) {
      // Assign the 'previous page' link into the array if we are not on the first page
      if ($this->page != 1) {
        if ($this->_showFirstAndLast) {
          $plinks[] = ' <a href="?page=1'.$queryUrl.'">&laquo;&laquo; First </a> ';
        }
        $plinks[] = ' <a href="?page='.($this->page - 1).$queryUrl.'">&laquo; Prev</a> ';
      }
  
      // Assign all the page numbers & links to the array
      for ($j = 1; $j < ($this->pages + 1); $j++) {
        if ($this->page == $j) {
          $links[] = ' <a class="selected">'.$j.'</a> '; // If we are on the same page as the current item
        } else {
          $links[] = ' <a href="?page='.$j.$queryUrl.'">'.$j.'</a> '; // add the link to the array
        }
      }
  
      // Assign the 'next page' if we are not on the last page
      if ($this->page < $this->pages) {
        $slinks[] = ' <a href="?page='.($this->page + 1).$queryUrl.'"> &raquo; </a> ';
        if ($this->_showFirstAndLast) {
          $slinks[] = ' <a href="?page='.($this->pages).$queryUrl.'"> &raquo;&raquo; </a> ';
        }
      }
  
      // Push the array into a string using any some glue
      return implode(' ', $plinks).implode($this->mainSeperator, $links).implode(' ', $slinks);
    }
    return;
  }
  }
  
  A:
  
  I think you need to make edit in this lines of code
  // Assign all the page numbers & links to the array
  $i = $this->page;
  for ($j = $i; $j < ($i + 9); $j++) {
  if ($this->page == $j) {
  $links[] = ' <a class="selected">'.$j.'</a> '; // If we are on the same page as the   current item
  } else {
   $links[] = ' <a href="?page='.$j.$queryUrl.'">'.$j.'</a> '; // add the link to the array
    }
  }
  
  please try like this..
  
  