1

我正在尝试从单个数组进行分页

$input = Array
        (
            [0] => 'A',
            [1] => 'B',
            [2] => 'C'
            ...

        )

例子$show_per_page=2;

在第 1 页

paging($input,$page, $show_per_page);

$output = Array(
                [0]=>'A',
                [1]=>'B'
        );

在第 2 页

$output = Array(                
                [2]=>'B'
        );

我知道array_slice但它不适合这种情况。有人知道该怎么做吗?

4

4 回答 4

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);
    }
}
于 2012-12-07T06:57:46.197 回答
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);
}
于 2014-07-22T16:37:42.530 回答
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);
        }
    }
于 2014-08-28T09:35:43.380 回答
-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
    )
)
于 2015-12-11T23:01:08.220 回答