我们的数据未必都是存储在数据库中,很多时候是用数组来组织的。所以获取数组数据,进行分页是比较常见的编程要求。分页的原理很简单,就是按分页数获取某个范围的数据而已,PHP给我们提供了一个很便利的函数:array_slice()。array_slice() 函数在数组中根据条件取出一段值,并返回。 下面举两个分页例子,都很简单。 01 public function books($pagenum = 1) 02 { 03 include_once("page.php"); 04 include("arr_books.php"); 05 06 foreach ($data['books'] as $key=>$value){ 07 $name[$key] = $value['name']; 08 $rank[$key] = $value['rank']; 09 } 10 11 array_multisort($rank,SORT_NUMERIC,SORT_DESC,$data['books']); // 倒序 12 //array_multisort($rank,SORT_NUMERIC,SORT_ASC,$data['books']); // 顺序 13 14 $perpage = 10; 15 $count = count($data['books']); 16 $pages = new PageClass($count, $perpage, $pagenum, base_url().'veda/books/{page}/'); 17 $start = ($pagenum - 1) * $perpage; 18 $data['bks'] = array_slice($data['books'], $start, $perpage); 19 20 $data['nav'] = $pages -> myde_write($pagenum); 21 22 $this->load->view('header', $data); 23 $this->load->view('books', $data); 24 $this->load->view('footer', $data); 25 } 再来一个: 1 $perpage = 2; 2 $page = intval(getgpc('page')) ? intval($_G['gp_page']) : 1; 3 $start = ($page - 1) * $perpage; 4 $count = count($group_list); 5 $list = array_slice($group_list, $start, $perpage); 6 $multipage = multi($count, $perpage, $page, "home.php?mod=space&do=group&type=".getgpc('type')); array_slice() 函数 array_slice() 函数在数组中根据条件取出一段值,并返回。如果数组有字符串键,所返回的数组将保留键名。 语法:array_slice(array,offset,length,preserve) 参数 描述 array 必需。规定输入的数组。 offset 必需。数值。规定取出元素的开始位置。 如果是正数,则从前往后开始取,如果是负值,从后向前取 offset 绝对值。 length 可选。数值。规定被返回数组的长度。 如果是负数,则从后向前,选取该值绝对值数目的元素。如果未设置该值,则返回所有元素。 preserve 可选。可能的值: true - 保留键 false - 默认 - 重置键 例子 1: 1 <?php 2 $a=array(0=>"Dog",1=>"Cat",2=>"Horse",3=>"Bird"); 3 print_r(array_slice($a,1,2)); 4 // Array ( [0] => Cat [1] => Horse ) 5 ?> 例子 2(带有负的 offset 参数): 1 <?php 2 $a=array(0=>"Dog",1=>"Cat",2=>"Horse",3=>"Bird"); 3 print_r(array_slice($a,-2,1)); 4 // Array ( [0] => Horse ) 5 ?> 例子 3(preserve 参数设置为 true): 1 <?php 2 $a=array(0=>"Dog",1=>"Cat",2=>"Horse",3=>"Bird"); 3 print_r(array_slice($a,1,2,true)); 4 // Array ( [1] => Cat [2] => Horse ) 5 ?> 例子 4(带有字符串键): view source print? 1 <?php 2 $a=array("a"=>"Dog","b"=>"Cat","c"=>"Horse","d"=>"Bird"); 3 print_r(array_slice($a,1,2)); 4 // Array ( [b] => Cat [c] => Horse ) 5 ?>