最近、インターネット上で PHP 配列ページングに関する投稿をたくさん読みました。その中には良いものもあると思うので、それらを共有して学びたいと思います。
私たちのデータは必ずしもデータベースに保存されているわけではありませんが、多くの場合、配列を使用して編成されています。したがって、配列データの取得とページングは比較的一般的なプログラミング要件です。ページングの原理は非常に単純で、ページ数に応じて特定の範囲のデータを取得するだけです。PHP には、array_slice() という非常に便利な関数が用意されています。 array_slice() 関数は、条件に基づいて配列から値のセグメントを削除し、それを返します。
例:
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); }
$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'));
array_slice() 関数
array_slice() 関数は、条件に基づいて配列から値のセグメントを削除し、それを返します。配列に文字列キーがある場合、返される配列にはキー名が保持されます。
構文: array_slice(配列,オフセット,長さ,保持)
パラメータ説明配列は必須です。入力配列を指定します。オフセット
必須。数値。取得する要素の開始位置を指定します。
正の値の場合は前から後ろに向かって取得され、負の値の場合は後ろから前に向かってオフセットの絶対値が取得されます。
長さ
オプション。数値。返される配列の長さを指定します。
負の数の場合は、後ろから前までの値の要素の絶対数を選択します。値が設定されていない場合は、すべての要素が返されます。
保存
オプション。可能な値:
true - 予約済みキー
false - デフォルト - リセットキー
例 1:
<?php $a=array(0=>"Dog",1=>"Cat",2=>"Horse",3=>"Bird"); print_r(array_slice($a,1,2)); // Array ( [0] => Cat [1] => Horse ) ?>
例 2 (負のオフセットパラメータを使用):
<?php $a=array(0=>"Dog",1=>"Cat",2=>"Horse",3=>"Bird"); print_r(array_slice($a,-2,1)); // Array ( [0] => Horse ) ?>
例 3 (パラメーターを true に設定したままにする):
<?php $a=array(0=>"Dog",1=>"Cat",2=>"Horse",3=>"Bird"); print_r(array_slice($a,1,2,true)); // Array ( [1] => Cat [2] => Horse ) ?>
例 4 (文字列キーを使用):
<?php $a=array("a"=>"Dog","b"=>"Cat","c"=>"Horse","d"=>"Bird"); print_r(array_slice($a,1,2)); // Array ( [b] => Cat [c] => Horse ) ?>