PHP配列データのページング方法を記録するarray_slice()関数の使用

3023 ワード

私たちのデータは必ずしもデータベースに格納されているわけではありません.多くの場合、配列で組織されています.したがって,配列データを取得し,ページングを行うことは比較的一般的なプログラミング要件である.ページ分けの原理はとても简単で、ページ数によってある范囲のデータを取得するだけで、PHPは私达に1つのとても便利な関数を提供しました:array_slice().array_slice()関数は、配列内で条件に基づいて値を取り出し、返します.
次は2つのページング例を挙げますが、どちらも簡単です.
	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(array,offset,length,preserve)
パラメータ
説明
array
必要です.入力された配列を指定します.
offset
必要です.を選択します.取り出し要素の開始位置を指定します.正数の場合は、行き先から取り、負の場合はoffset絶対値を後ろから前へ取ります.
length
オプション.を選択します.返される配列の長さを指定します.負数の場合は、後ろから前へ、絶対値の数の要素を選択します.値が設定されていない場合は、すべての要素が返されます.
preserve
オプション.可能な値:
true-保留キーfalse-デフォルト-リセットキー例1:
"Dog",1=>"Cat",2=>"Horse",3=>"Bird");
print_r(array_slice($a,1,2));
// Array ( [0] => Cat [1] => Horse )
?>

例2(負のoffsetパラメータ付き):
"Dog",1=>"Cat",2=>"Horse",3=>"Bird");
print_r(array_slice($a,-2,1));
// Array ( [0] => Horse )
?>

例3(preserveパラメータをtrueに設定):
"Dog",1=>"Cat",2=>"Horse",3=>"Bird");
print_r(array_slice($a,1,2,true));
// Array ( [1] => Cat [2] => Horse )
?>

例4(文字列キー付き):
"Dog","b"=>"Cat","c"=>"Horse","d"=>"Bird");
print_r(array_slice($a,1,2));
// Array ( [b] => Cat [c] => Horse )
?>
http://www.nowamagic.net/librarys/veda/detail/1609