php 3行代碼的分頁算法(求起始頁和結(jié)束頁)
更新時間:2009年10月21日 14:15:19 作者:
涉及到分頁時, 除非只顯示上一頁/下一頁, 否則需要計算起始頁和結(jié)束頁. 看過很多代碼都是用大量的if-else來實現(xiàn), 代碼量大, 又不簡潔. 現(xiàn)在提供一種只需要3行代碼的算法.
一個好的分頁算法, 應(yīng)該具有下面的優(yōu)點:
當(dāng)前頁碼應(yīng)該盡量在正中間.
如果"首頁"和"尾頁"不可用(當(dāng)前處于第一頁或最后一頁), 不要隱藏這兩組文字, 以免鏈接按鈕位置變動.
算法簡單.
下面的算法具有前面1和3兩個優(yōu)點.
// $curr_index, 當(dāng)前頁碼.
// $link_count, 鏈接數(shù)量.
// $page_count, 當(dāng)前的數(shù)據(jù)的總頁數(shù).
// $start, 顯示時的起始頁碼.
// $end, 顯示時的終止頁碼.
$start = max(1, $curr_index - intval($link_count/2));
$end = min($start + $link_count - 1, $page_count);
$start = max(1, $end - $link_count + 1);
start = Math.max(1, curr_index - parseInt(link_count/2));
end = Math.min(page_count, start + link_count - 1);
start = Math.max(1, end - link_count + 1);
當(dāng)前頁碼應(yīng)該盡量在正中間.
如果"首頁"和"尾頁"不可用(當(dāng)前處于第一頁或最后一頁), 不要隱藏這兩組文字, 以免鏈接按鈕位置變動.
算法簡單.
下面的算法具有前面1和3兩個優(yōu)點.
復(fù)制代碼 代碼如下:
// $curr_index, 當(dāng)前頁碼.
// $link_count, 鏈接數(shù)量.
// $page_count, 當(dāng)前的數(shù)據(jù)的總頁數(shù).
// $start, 顯示時的起始頁碼.
// $end, 顯示時的終止頁碼.
$start = max(1, $curr_index - intval($link_count/2));
$end = min($start + $link_count - 1, $page_count);
$start = max(1, $end - $link_count + 1);
start = Math.max(1, curr_index - parseInt(link_count/2));
end = Math.min(page_count, start + link_count - 1);
start = Math.max(1, end - link_count + 1);
相關(guān)文章
PHP編程實現(xiàn)陽歷轉(zhuǎn)換為陰歷的方法實例
這篇文章主要介紹了PHP編程實現(xiàn)陽歷轉(zhuǎn)換為陰歷的方法,結(jié)合具體實例形式分析了php陰歷操作類的定義與使用技巧,需要的朋友可以參考下2017-08-08
PHP基于反射機制實現(xiàn)插件的可插拔設(shè)計詳解
這篇文章主要介紹了PHP基于反射機制實現(xiàn)插件的可插拔設(shè)計,結(jié)合實例形式較為詳細的分析了插件的功能、反射機制原理與實現(xiàn)可插拔設(shè)計的操作步驟,需要的朋友可以參考下2016-11-11
php模擬post行為代碼總結(jié)(POST方式不是絕對安全)
GET行為比較簡單,POST比較復(fù)雜一些2012-02-02
PHP錯誤Warning:mysql_query()解決方法
這篇文章主要介紹了PHP錯誤Warning:mysql_query()的解決方法,希望可以真正解決大家的問題,需要的朋友可以參考下2015-10-10
PHP使用Redis實現(xiàn)防止大并發(fā)下二次寫入的方法
這篇文章主要介紹了PHP使用Redis實現(xiàn)防止大并發(fā)下二次寫入的方法,結(jié)合實例形式分析了php使用鎖機制實現(xiàn)并發(fā)讀寫redis情況下的讀寫錯誤,需要的朋友可以參考下2017-10-10

