[php] 如何從數組中做分頁?



Answers

使用array_chunk

function paginate($array, $pageSize, $page = 1)
{
    $pages = array_chunk($array, $pageSize);
    return $page > sizeof($pages) ? [] : $pages[$page - 1];
}

或者使用Marcin's的清潔版本答案:

function paginate($array, $pageSize, $page = 1)
{
    $page = $page < 1 ? 1 : $page;
    $start = ($page - 1) * $pageSize;
    return array_slice($array, $start, $pageSize);
}
Question

我有一個數據,我想與分頁顯示數組。

$display_array = Array
(
    [0] => "0602 xxx2",
    [1] => "0602 xxx3",
    [2] => 5 // Total= 2+3
    [3] => "0602 xxx3",
    [4] => "0602 saa4",
    [5] => 7 // Total = 3+4
)

我嘗試了一些這樣的事情

function pagination($display_array, $page)
{   
    global $show_per_page;
    $page = $page < 1 ? 1 : $page;
    $start = ($page - 1) * $show_per_page;
    $end = $page * $show_per_page;
    for($i = $start; $i < $end; $i++)
    {
        ////echo $display_array[$i] . "<p>";
        // How to manipulate this?   
        // To get the result as I described below.
    }
}

我想做一個分頁來得到這樣的預期結果:

如果我定義$show_per_page = 2; 然後pagination($display_array, 1); 輸出:

0602 xxx2
0602 xxxx3
Total:5

paganation($display_array, 2); 輸出:

0602 xxx3
0602 saa4
Total:7

如果我定義$show_per_page = 3; ,然後pagination($display_array, 1); 輸出:

0602 xxx2
0602 xxxx3
Total: 5 
0602 xxx3

paganation($display_array, 2); 輸出:

0602 saa4
Total:7

如果我定義$show_per_page = 4; 輸出:

0602 xxx2
0602 xxxx3
Total:5
0602 xxx3
0602 saa4
Total: 7 



Links