zoukankan      html  css  js  c++  java
  • 记录一下PHP数组数据分页的方法

    我们的数据未必都是存储在数据库中,很多时候是用数组来组织的。所以获取数组数据,进行分页是比较常见的编程要求。分页的原理很简单,就是按分页数获取某个范围的数据而已,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 - 默认 - 重置键
    
    例子 11    <?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    ?>
  • 相关阅读:
    215. 数组中的第K个最大元素
    c++集合的操作
    201. 数字范围按位与
    150. 逆波兰表达式求值
    二叉树的遍历算法
    144. 二叉树的前序遍历
    139. 单词拆分 DP
    131. 分割回文串
    695. 岛屿的最大面积 DFS
    leetcode 200. 岛屿数量 DFS
  • 原文地址:https://www.cnblogs.com/afei-happy/p/3376206.html
Copyright © 2011-2022 走看看