この記事の内容は、PHP で 2 次元配列をページネーションする方法 (コード付き) に関するもので、一定の参考価値があり、必要な友人が参照することができます。
2 次元配列のページング。各ページに 10 個の項目が表示されると仮定すると、リストのページングは通常データベースからチェックされ、2 次元配列であることが判明してからレンダリングされます。リストへのページングです。ここでのページングはデータベースをチェックすることです。チェックする場合、ページごとの項目数のみがチェックされます。各ページに項目が 10 個ある場合は、10 個の項目だけがチェックされます。ただし、この 2 次元配列はチェックされません。データベースから見つかりましたが、すべてのデータは最初からこの配列に格納されています。リストにレンダリングするには、ページネーションを行うにはどうすればよいでしょうか?添字を使用して、この 2 桁の配列から 10 個の 1 桁の配列を選択するという愚かな方法があります。次のような 2 次元配列を想定し、1 ページあたり 10 項目で 2 ページを表示できるため、12 項目のデータを作成しました
$arr = array( array('name'=>'第一页张三1','mobile'=>'111111111'), array('name'=>'第一页李四1','mobile'=>'222222222'), array('name'=>'第一页王五1','mobile'=>'333333332'), array('name'=>'第一页李四2','mobile'=>'444444444'), array('name'=>'第一页张三2','mobile'=>'555555555'), array('name'=>'第一页王五2','mobile'=>'666666666'), array('name'=>'第一页张三3','mobile'=>'777777777'), array('name'=>'第一页李四3','mobile'=>'888888888'), array('name'=>'第一页王五3','mobile'=>'999999999'), array('name'=>'第一页李四4','mobile'=>'123456789'), array('name'=>'第二页张三4','mobile'=>'987654321'), array('name'=>'第二页王五4','mobile'=>'112233445'), ); //前端传过来的页数,第几页 $p = I('p'); if (empty($p)){ $p = 1; } //开始取值的下标,数组下标是从0开始的,例如第一页从下标为0开始取,第二页从下标为10开始取 $start = ($p-1)*10; //根据开始的下标,和需要取的数据的条数(每页显示的条数)循环赋值给新数组 for ($i=$start;$i<$start+10;$i++){ if (!empty($arr[$i])){ $new_arr[$i] = $arr[$i]; } } dump($new_arr);
Print結果:
カプセル化:
public function arr_page($arr,$p,$count){ if (empty($p)){ $p = 1; } if (empty($count)){ $count = 10; } $start = ($p-1)*$count; for ($i=$start;$i<$start+$count;$i++){ if (!empty($arr[$i])){ $new_arr[$i] = $arr[$i]; } } return $new_arr; }
呼び出し: 同じ結果を出力します
$new_arr = $this->arr_page($arr,1,10); dump($new_arr);
呼び出し時に他のパラメータを渡すこともできますが、必ずしもすべてのページに渡す必要はありません。10 個の項目、
$new_arr = $this->arr_page($arr,1,5); $new_arr = $this->arr_page($arr,2,5);
ページ数については、count($arr) を次の値で割った値を使用します。ページごとの項目数。小数点がある場合は、ページ分割できるように 1 を追加します。
以上がPHPで2次元配列をページネーションする方法(コード付き)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。