【PHP】 數組分頁函數、根據字段排序並分頁


if (!function_exists("pageByArr")) {
    /**
     * 數組分頁函數  核心函數  array_slice
     * 用此函數之前要先將數據庫裏面的所有數據按一定的順序查詢出來存入數組中
     * $array   查詢出來的所有數組
     * $limit   每頁多少條數據,默認20條
     * $page   當前第幾頁,默認 第1頁
     * order desc - 降序     asc - 升序
     * $field: 以哪個字段進行排序
     */

    function pageByArr($arr = [], $limit = 20, $page = 1, $order = 'asc', $field = "")
    {
        $page = (empty($page)) ? '1' : $page; #判斷當前頁面是否爲空 如果爲空就表示爲第一頁面
        $start = ($page - 1) * $limit; #計算每次分頁的開始位置
        $order = strtoupper($order);
        if (empty($field)) {
            if ($order == 'DESC') {
                $arr = array_reverse($arr);
            }
        } else {
            $arr = arraySortByField($arr, $field, $order);
        }
        $totals = count($arr);
        $countpage = ceil($totals / $limit); #計算總頁面數
        $pagedata = [];
        $pagedata = array_slice($arr, $start, $limit);
        return $pagedata; #返回查詢數據
    }

}

if (!function_exists("arraySortByField")) {
    /**
     * 對數組進行排序
     * $field: 以哪個字段進行排序
     * $order: 排序方式 asc/desc
     */
    function arraySortByField($arr = [], $field = "", $order = 'asc')
    {
        $order = strtoupper($order);
        if ('ASC' == $order) {
            array_multisort(array_column($arr, $field), SORT_ASC, $arr);
        }
        if ('DESC' == $order) {
            array_multisort(array_column($arr, $field), SORT_DESC, $arr);
        }
        return $arr;
    }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章