欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品

主頁 > 知識庫 > PHP 實現數組分頁

PHP 實現數組分頁

熱門標簽:400電話個人能不能辦理 銀行信貸電話機器人 天津電銷外呼系統違法嗎 溫州外呼系統招商 手機外呼系統什么原理 凱立德地鐵站地圖標注 合肥ai電銷機器人費用 上海400客服電話怎么申請 滄州電銷外呼系統價格

今天,我們就來學習一下可以實現這個能力的一些函數技巧。

首先,我們還是準備好測試數據。

$data = [
    'A',
    'B',
    'C',
    'D',
    'E',
    'F',
    'G',
    'H',
    'I',
    'J',
    'K',
];

// $p = $_GET['p'];
$p = 2;
$currentPage = $p = 1 ? 0 : $p - 1;
$pageSize = 3;
$offset = $currentPage * $pageSize;

假設 \$data 就是從數據庫中取出的全部數據,或者就是我們寫死在 PHP 代碼中的數據。然后我們設定 $p 為接收到的請求參數,當前訪問的是第二頁。$currentPage 是用于查詢偏移量的修正,在代碼開發的世界中,下標索引都是從0開始的,所以我們需要對接收到的參數進行減一的操作。當然,你也可以設定前端傳遞的參數就是以 0 為第一頁的。這個就不多解釋了,相信大家只要正式的學習或者參與過開發項目都會明白它的意思。

然后我們定義了當前頁面所顯示的信息條數 $pageSize ,也就是只獲取 3 條數據。最后,我們計算了一下偏移量,也就是類似于 MySQL 的 LIMIT 中的那個參數。它的作用就是告訴我們從第幾條開始查詢,然后配合 $pageSize 查詢幾條。這樣我們就可以獲得當前頁面對應的數據了。(貌似把分頁的原理都講了一下)

array_slice

第一個也是最基礎和最常見的分頁方式,就是使用 array_slice() 函數來實現。它的作用是從數組中截取出一段內容來并返回這段內容的數組。

var_dump(array_slice($data, $offset, $pageSize));
// array(3) {
//     [0]=>
//     string(1) "D"
//     [1]=>
//     string(1) "E"
//     [2]=>
//     string(1) "F"
//   }

array_slice() 函數需要三個參數,第二個參數就是偏移量,第三個參數是查詢幾條數據。其中,第三個參數是可選的,不填的話就會把當前設定的偏移量之后的數據全部顯示出來。是不是和我們的 MySQL 查詢語句一模一樣。沒錯,他們本身就是類似的操作。

array_chunk

array_chunk() 函數則是根據一個數值參數將一個數組進行分組,也就是將數組分割成一段一段的子數組。我們就可以根據分割后的數組來獲取指定下標的子數組內容,這些內容就是當前的頁面需要展示的數據了。

$pages = array_chunk($data, $pageSize);
var_dump($pages);
// array(4) {
//     [0]=>
//     array(3) {
//       [0]=>
//       string(1) "A"
//       [1]=>
//       string(1) "B"
//       [2]=>
//       string(1) "C"
//     }
//     [1]=>
//     array(3) {
//       [0]=>
//       string(1) "D"
//       [1]=>
//       string(1) "E"
//       [2]=>
//       string(1) "F"
//     }
//     [2]=>
//     array(3) {
//       [0]=>
//       string(1) "G"
//       [1]=>
//       string(1) "H"
//       [2]=>
//       string(1) "I"
//     }
//     [3]=>
//     array(2) {
//       [0]=>
//       string(1) "J"
//       [1]=>
//       string(1) "K"
//     }
//   }

var_dump($pages[$currentPage]);
// array(3) {
//     [0]=>
//     string(1) "A"
//     [1]=>
//     string(1) "B"
//     [2]=>
//     string(1) "C"
//   }

這段代碼我們輸出了分割后的數組內容,然后需要的是第二頁也就是下標為 1 的數據,直接通過分割后的數組就可以方便地獲取到所需要的內容了。使用這個函數來做數組分頁的功能非常地簡單直觀,而且它不需要去計算偏移量,直接就是使用當前頁 $currentPage 和 $pageSize 就可以完成對于數據的分組了,非常推薦大家使用這個函數來進行類似的操作。

LimitIterator

最后我們要學習到的是使用一個迭代器類來實現數組分頁的能力,這個使用的就比較少了,估計都沒什么人知道,但其實 LimitIterator 類在 PHP5.1 時就已經提供了。它的作用是允許遍歷一個 Iterator 的限定子集的元素。也就是說,如果我們的代碼中使用了迭代器模式,實現了迭代器接口,那么這些迭代器類都可以使用這個類進行分頁操作。

foreach (new LimitIterator(new ArrayIterator($data), $offset, $pageSize) as $d) {
    var_dump($d);
}
// string(1) "D"
// string(1) "E"
// string(1) "F"

它需要的實例化構造參數包含3個,第一個是一個迭代器對象,由于數組不是迭代器對象,所以我們使用 ArrayIterator 實例將我們的數組數據轉化為一個迭代器對象。后面兩個參數就是偏移量和數據數量了,這個和 array_slice() 函數是類似的,不過不同的是,它的偏移量參數也是可以選的。如果我們不給后面的可選參數的話,那么它將遍歷所有的數據。

foreach (new LimitIterator(new ArrayIterator($data)) as $d) {
    var_dump($d);
}
// string(1) "A"
// string(1) "B"
// string(1) "C"
// string(1) "D"
// string(1) "E"
// string(1) "F"
// string(1) "G"
// string(1) "H"
// string(1) "I"
// string(1) "J"
// string(1) "K"

參數錯誤時的表現

接下來,我們看看如果參數錯誤,也就是偏移量或者所需的數據量大小有問題的話,這些操作將會有什么樣的表現。

var_dump(array_slice($data, $offset, 150));
// array(8) {
//     [0]=>
//     string(1) "D"
//     [1]=>
//     string(1) "E"
//     [2]=>
//     string(1) "F"
//     [3]=>
//     string(1) "G"
//     [4]=>
//     string(1) "H"
//     [5]=>
//     string(1) "I"
//     [6]=>
//     string(1) "J"
//     [7]=>
//     string(1) "K"
//   }
var_dump(array_slice($data, 15, $pageSize));
// array(0) {
// }

array_slice() 函數對于偏移量錯誤的兼容就是展示一個空的數組。而數據量超標的話則會展示所有偏移量之后的數據。

var_dump($pages[15]);
// NULL

array_chunk() 對于下標不存在的數據當然就是返回一個 NULL 值啦。

foreach (new LimitIterator(new ArrayIterator($data), $offset, 150) as $d) {
    var_dump($d);
}
// string(1) "D"
// string(1) "E"
// string(1) "F"
// string(1) "G"
// string(1) "H"
// string(1) "I"
// string(1) "J"
// string(1) "K"

foreach (new LimitIterator(new ArrayIterator($data), 15, $pageSize) as $d) {
    var_dump($d);
}
// Fatal error: Uncaught OutOfBoundsException: Seek position 15 is out of range

LimitIterator 則是對于偏移量錯誤的數據直接返回錯誤異常信息了。這也是類模式處理的好處,有錯誤都會以異常的形式進行返回,方便我們對異常進行后續的處理。

其它的測試大家還可以自行檢測,比如偏移是 0 或者是負數的情況,數據量是 0 或者是負數的情況。這些我就不多寫了,大家可以根據已有的知識先猜想一下結果會是什么樣的,然后再自己寫代碼驗證一下結果是符合自己的預期,這樣學習的效果會非常棒哦!(在下方測試代碼鏈接中有測試,結果里面是有坑的哦)

總結

一個功能使用了三種方式來實現,這就是代碼的魅力。至于哪個好哪個壞我們不多做評價,一切都是以業務為核心來進行選取。類似的功能雖說并不常見,但很多項目里都會遇到,比如說后臺用戶組管理就會非常常見,一般來說后臺用戶分組如果不是特別大型的 ERP 項目都不會很多,但有時候也會達到需要分頁的程度,這時候,我們就可以考慮考慮使用今天所學的知識來做咯!

測試代碼

以上就是PHP 實現數組分頁的詳細內容,更多關于PHP 數組分頁的資料請關注腳本之家其它相關文章!

您可能感興趣的文章:
  • PHP中的數組分頁實現(非數據庫)實例講解
  • PHP二維數組分頁2種實現方法解析
  • PHP實現對數組分頁處理實例詳解
  • php數組分頁實現方法
  • php簡單實現數組分頁的方法
  • PHP基于數組實現的分頁函數實例
  • thinkphp實現數組分頁示例

標簽:金華 洛陽 溫州 赤峰 七臺河 酒泉 白城 怒江

巨人網絡通訊聲明:本文標題《PHP 實現數組分頁》,本文關鍵詞  PHP,實現,數組,分頁,PHP,實現,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《PHP 實現數組分頁》相關的同類信息!
  • 本頁收集關于PHP 實現數組分頁的相關信息資訊供網民參考!
  • 推薦文章
    欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品
  • <rt id="w000q"><acronym id="w000q"></acronym></rt>
  • <abbr id="w000q"></abbr>
    <rt id="w000q"></rt>
    欧美精品一区二区三区一线天视频| 色欧美日韩亚洲| 中文字幕求饶的少妇| 正在播放亚洲一区| 亚洲高清免费观看| 国产麻豆精品theporn| ass精品国模裸体欣赏pics| 少妇影院在线观看| 国产精品美女久久久久久久久久久 | 色狠狠桃花综合| 国产精品久久久久久福利一牛影视| 国内成人精品2018免费看| 国产一二三四区在线| 欧美日韩一区二区三区不卡| 久久久久久久久久美女| 成年人性生活视频| 四季av中文字幕| 欧美肥大bbwbbw高潮| 国产精品久久久久久亚洲伦| 粉嫩久久99精品久久久久久夜| 久久久久9999| 欧洲另类一二三四区| 亚洲精品高清在线观看| 国产成人在线观看| 免费看污片网站| 欧美影片第一页| 亚洲国产成人精品视频| 99riav一区二区三区| 99精品中文字幕| 精品第一国产综合精品aⅴ| 久久国产精品99精品国产| 亚洲天堂美女视频| 欧美日韩亚洲综合一区| 亚洲欧美日韩国产综合| 国产98色在线|日韩| 9.1人成人免费视频网站| 亚洲综合在线五月| 免费的av网站| 国产视频一区二区三区在线观看| 成人精品小蝌蚪| av资源在线免费观看| 中文字幕一区二区在线观看| 国产一区二区久久| 少妇真人直播免费视频| 欧美一级专区免费大片| 国产精品自拍在线| 色婷婷综合久色| 无码av免费一区二区三区试看| 佐山爱在线视频| 日本道色综合久久| 亚洲va欧美va国产va天堂影院| 美女爆乳18禁www久久久久久 | 伊人开心综合网| eeuss鲁片一区二区三区| 91传媒免费观看| 一区二区三区电影在线播| 99re这里只有精品首页| 日韩欧美一卡二卡| 另类中文字幕网| 色综合中文综合网| 亚洲色偷偷色噜噜狠狠99网| 欧美日韩一区二区在线视频| 亚洲午夜免费视频| 欧美三级视频网站| 一区二区三区在线免费视频 | 在线观看国产三级| 亚洲国产成人私人影院tom| 国产大片一区二区| 欧美精品日日鲁夜夜添| 婷婷久久综合九色综合绿巨人| 精品1卡二卡三卡四卡老狼| 久久久精品国产免费观看同学| 91香蕉视频污在线| 欧美放荡的少妇| 蜜桃精品视频在线| 色94色欧美sute亚洲线路二| 理论电影国产精品| 欧美性生给视频| 日韩精品成人一区二区在线| 日本黄色网址大全| 久久久精品日韩欧美| 亚洲av成人精品一区二区三区| 欧美国产精品一区| av在线不卡免费看| 精品国产1区二区| 成人午夜精品一区二区三区| 日韩久久精品一区| 国产91富婆露脸刺激对白| 欧美一级黄色大片| 国产乱码字幕精品高清av | 97久久久精品综合88久久| 亚洲精品一区在线观看| 国产成人丝袜美腿| 精品美女被调教视频大全网站| 亚洲精品一二三四| 国产精品久久久久影院色老大| 乐播av一区二区三区| 亚洲不卡一区二区三区| 一区二区精品免费| 日韩精品久久久久久| 欧美日韩国产一二三| 波多野结衣的一区二区三区| 欧美福利视频一区| 91免费看片在线观看| 欧美大白屁股肥臀xxxxxx| 国产在线观看免费播放| xnxx国产精品| 99国产精品国产精品毛片| 日韩一区二区在线看片| 色哟哟网站在线观看| 最新久久zyz资源站| 九九这里只有精品视频| 激情六月婷婷久久| 精品国产凹凸成av人导航| 成人免费无码大片a毛片| 五月天视频一区| 中文字幕在线观看2018| 亚洲va韩国va欧美va精品| 欧美三级韩国三级日本一级| 波多野结衣在线一区| 综合自拍亚洲综合图不卡区| 精品无码在线视频| 性做久久久久久| 制服丝袜中文字幕亚洲| 国产999精品久久| 国产精品乱码一区二区三区软件| 少妇高潮在线观看| 国产精品99久久久久久似苏梦涵| 久久久久久久久一| 欧美一区二区免费在线观看| 亚洲欧洲精品天堂一级 | 风韵丰满熟妇啪啪区老熟熟女| 国产色91在线| 成人信息集中地| 成人免费精品视频| 精品国产第一区二区三区观看体验 | 俄罗斯黄色录像| 中文字幕亚洲综合久久菠萝蜜| 色综合天天视频在线观看 | 国产亚洲短视频| 一二三四在线观看视频| 石原莉奈一区二区三区在线观看| 色先锋久久av资源部| 黄页视频在线91| 国产网红主播福利一区二区| 亚洲精品女人久久久| 久久福利视频一区二区| 欧美老肥妇做.爰bbww| 99精品视频在线观看| 亚洲精品成人少妇| 7777精品伊人久久久大香线蕉完整版 | 日韩视频免费直播| 精品一区二区三区蜜桃在线| 日韩高清中文字幕一区| 欧美三级一区二区| 成人免费看aa片| 国产精品一二三在| 精品福利一二区| 国产精品亚洲无码| 日韩经典一区二区| 欧美猛男男办公室激情| 亚洲自拍偷拍一区二区| 国产一区二区三区高清播放| 亚洲欧洲三级电影| 3d动漫精品啪啪| 日日碰狠狠添天天爽| 精品午夜久久福利影院| 国产精品美女www爽爽爽| 在线观看91精品国产入口| proumb性欧美在线观看| 亚洲成人先锋电影| 久久久久久麻豆| 免费看一级黄色| 豆国产96在线|亚洲| 亚洲午夜久久久久久久久久久| 欧美性感一类影片在线播放| 国产三级国产精品| 国产成人久久精品77777最新版本| 久久久久99精品国产片| 亚洲精品国产精品乱码在线观看| 99久久免费国产| 亚洲色图欧美激情| 欧美电视剧在线观看完整版| www日韩在线| 亚洲国产欧美视频| 欧美bbbbb| 亚洲视频在线观看三级| 欧美mv日韩mv国产网站| 色婷婷久久综合| 少妇无套高潮一二三区| 91视频com| 五月天亚洲婷婷| 精品国产乱码久久久久久久久| 国产真人做爰视频免费| 特种兵之深入敌后| 国产成人在线色| 蜜臀精品一区二区三区在线观看| 欧美精品一区二区三区视频| 人妻无码一区二区三区免费| 国产成人av片|