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    ?>
  • 相关阅读:
    Blank page instead of the SharePoint Central Administration site
    BizTalk 2010 BAM Configure
    Use ODBA with Visio 2007
    Handling SOAP Exceptions in BizTalk Orchestrations
    BizTalk与WebMethods之间的EDI交换
    Append messages in BizTalk
    FTP protocol commands
    Using Dynamic Maps in BizTalk(From CodeProject)
    Synchronous To Asynchronous Flows Without An Orchestration的简单实现
    WSE3 and "Action for ultimate recipient is required but not present in the message."
  • 原文地址:https://www.cnblogs.com/afei-happy/p/3376206.html
Copyright © 2011-2022 走看看