Php 从单个数组进行简单分页
我正在尝试从单个数组进行分页Php 从单个数组进行简单分页,php,arrays,Php,Arrays,我正在尝试从单个数组进行分页 $input = Array ( [0] => 'A', [1] => 'B', [2] => 'C' ... ) 示例$show_/_页面=2 在第1页 paging($input,$page, $show_per_page); $output = Array( [0]=>'A
$input = Array
(
[0] => 'A',
[1] => 'B',
[2] => 'C'
...
)
示例$show_/_页面=2
在第1页
paging($input,$page, $show_per_page);
$output = Array(
[0]=>'A',
[1]=>'B'
);
在第2页
$output = Array(
[2]=>'B'
);
我知道array\u slice,但它不适合这种情况。有人知道怎么做吗?是的,array\u slice正是您想要的。这是最有效的方法。这是你需要的
function get_page(array $input, $pageNum, $perPage) {
$start = ($pageNum-1) * $perPage;
$end = $start + $perPage;
$count = count($input);
// Conditionally return results
if ($start < 0 || $count <= $start) {
// Page is out of range
return array();
} else if ($count <= $end) {
// Partially-filled page
return array_slice($input, $start);
} else {
// Full page
return array_slice($input, $start, $end - $start);
}
}
是的,数组_片正是您想要的。这是最有效的方法。这是你需要的
function get_page(array $input, $pageNum, $perPage) {
$start = ($pageNum-1) * $perPage;
$end = $start + $perPage;
$count = count($input);
// Conditionally return results
if ($start < 0 || $count <= $start) {
// Page is out of range
return array();
} else if ($count <= $end) {
// Partially-filled page
return array_slice($input, $start);
} else {
// Full page
return array_slice($input, $start, $end - $start);
}
}
Steven的答案是可行的,但if/elseif/else是不必要的,至少在PHP 5.3及以上版本中是不必要的,在旧版本中可能需要它:
/**
* @param array $array Array to be paged
* @param int $pageNumber One-based pageNumber to return
* @param int $pageSize Desired page size
* @return array
*/
public function getPage($array, $pageNumber, $pageSize)
{
$start = --$pageNumber * $pageSize;
return array_slice($array, $start, $pageSize);
}
Steven的答案是可行的,但if/elseif/else是不必要的,至少在PHP 5.3及以上版本中是不必要的,在旧版本中可能需要它:
/**
* @param array $array Array to be paged
* @param int $pageNumber One-based pageNumber to return
* @param int $pageSize Desired page size
* @return array
*/
public function getPage($array, $pageNumber, $pageSize)
{
$start = --$pageNumber * $pageSize;
return array_slice($array, $start, $pageSize);
}
试试这个,
function paging($data, $limit, $page){
$jmlData = count($data);
if(!empty($limit)){
$totalHalaman = ceil($jmlData/$limit);
}else{
$totalHalaman = 1;
}
if(!empty($page) && !empty($limit)){
$start = ($page - 1) * $limit;
}else{
$start = 0;
}
$end = $start + $limit;
if($start < 0 || $totalHalaman < $page){
return array();
} elseif($start == 0 && $limit == 0){
return array_slice($data, $totalHalaman);
}else{
return array_slice($data, $start, $end - $start);
}
}
试试这个,
function paging($data, $limit, $page){
$jmlData = count($data);
if(!empty($limit)){
$totalHalaman = ceil($jmlData/$limit);
}else{
$totalHalaman = 1;
}
if(!empty($page) && !empty($limit)){
$start = ($page - 1) * $limit;
}else{
$start = 0;
}
$end = $start + $limit;
if($start < 0 || $totalHalaman < $page){
return array();
} elseif($start == 0 && $limit == 0){
return array_slice($data, $totalHalaman);
}else{
return array_slice($data, $start, $end - $start);
}
}
如果您使用PHP5.x
$pages = array_chunk($goodfiles, 5);
结果:
Array
(
[0] => Array
(
[0] => About_RFSB06WEB.flv
[1] => Kids_Excited.flv
[2] => Kids_Start_Run.flv
[3] => Kids_start.jpg
[4] => Kids_start_sm.jpg
)
[1] => Array
(
[0] => image01.jpg
[1] => image02.jpg
[2] => image03.jpg
[3] => image04.jpg
[4] => image05.jpg
)
[2] => Array
(
[0] => image06.jpg
[1] => image07.jpg
[2] => image08.jpg
)
)
如果您使用PHP5.x
$pages = array_chunk($goodfiles, 5);
结果:
Array
(
[0] => Array
(
[0] => About_RFSB06WEB.flv
[1] => Kids_Excited.flv
[2] => Kids_Start_Run.flv
[3] => Kids_start.jpg
[4] => Kids_start_sm.jpg
)
[1] => Array
(
[0] => image01.jpg
[1] => image02.jpg
[2] => image03.jpg
[3] => image04.jpg
[4] => image05.jpg
)
[2] => Array
(
[0] => image06.jpg
[1] => image07.jpg
[2] => image08.jpg
)
)
我会使用array\u chunk:array\u chunk将效率低下。数组块可以很好地工作。我会使用数组块:数组块效率会很低。array_slice可以正常工作。我认为在使用基于1的页面编号时,需要使用-$pageNumber。否则,您将以-1开头。我认为在使用基于1的页码时,您需要使用-$pageNumber。否则,您将从-1开始。