Our data is not necessarily stored in the database, but is often organized using arrays. Therefore, obtaining array data and paging are relatively common programming requirements. The principle of paging is very simple, it is just to obtain a certain range of data according to the number of pages. PHP provides us with a very convenient function: array_slice(). The array_slice() function removes a segment of value from the array based on conditions and returns it.
Here are two paging examples, both of which are simple.
public function books($pagenum = 1) { include_once("page.php"); include("arr_books.php"); foreach ($data['books'] as $key=>$value){ $name[$key] = $value['name']; $rank[$key] = $value['rank']; } array_multisort($rank,SORT_NUMERIC,SORT_DESC,$data['books']); // 倒序 //array_multisort($rank,SORT_NUMERIC,SORT_ASC,$data['books']); // 顺序 $perpage = 10; $count = count($data['books']); $pages = new PageClass($count, $perpage, $pagenum, base_url().'veda/books/{page}/'); $start = ($pagenum - 1) * $perpage; $data['bks'] = array_slice($data['books'], $start, $perpage); $data['nav'] = $pages -> myde_write($pagenum); $this->load->view('header', $data); $this->load->view('books', $data); $this->load->view('footer', $data); }
One more:
$perpage = 2; $page = intval(getgpc('page')) ? intval($_G['gp_page']) : 1; $start = ($page - 1) * $perpage; $count = count($group_list); $list = array_slice($group_list, $start, $perpage); $multipage = multi($count, $perpage, $page, "home.php?mod=space&do=group&type=".getgpc('type'));
The array_slice() function takes out a segment of value from the array based on conditions and returns it. If the array has string keys, the returned array will retain the key names.
Syntax: array_slice(array,offset,length,preserve)
Parameter | Description | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
array | Required. Specifies the input array. | ||||||||||
offset |
If it is a positive number, it will be taken from the front to the back. If it is a negative value, the offset absolute value will be taken from the back to the front. <?php $a=array(0=>"Dog",1=>"Cat",2=>"Horse",3=>"Bird"); print_r(array_slice($a,1,2)); // Array ( [0] => Cat [1] => Horse ) ?> Copy after login | ||||||||||
length | Optional. numerical value. Specifies the length of the returned array. <?php $a=array(0=>"Dog",1=>"Cat",2=>"Horse",3=>"Bird"); print_r(array_slice($a,-2,1)); // Array ( [0] => Horse ) ?> Copy after login
| ||||||||||
preserve | Optional. Possible values: <?php $a=array(0=>"Dog",1=>"Cat",2=>"Horse",3=>"Bird"); print_r(array_slice($a,1,2,true)); // Array ( [1] => Cat [2] => Horse ) ?> Copy after login
|
Example 1:
<?php $a=array("a"=>"Dog","b"=>"Cat","c"=>"Horse","d"=>"Bird"); print_r(array_slice($a,1,2)); // Array ( [b] => Cat [c] => Horse ) ?>
true