我正在尝试从单个数组进行分页
$input = Array
(
[0] => 'A',
[1] => 'B',
[2] => 'C'
...
)
示例$show_per_page=2;
paging($input,$page, $show_per_page);
$output = Array(
[0]=>'A',
[1]=>'B'
);
第2页
$output = Array(
[2]=>'B'
);
我知道array_slice
,但这种情况不对。有人知道怎么做吗?
答案 0 :(得分:5)
是的,array_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);
}
}
答案 1 :(得分:3)
史蒂文的答案可行,但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);
}
答案 2 :(得分:0)
试试这个,
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);
}
}
答案 3 :(得分:-1)
如果您使用PHP 5.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
)
)