PHP 페이징 클래스는 Google 인터뷰 질문 답변을 모방합니다.

WBOY
풀어 주다: 2016-07-29 08:40:47
원래의
1099명이 탐색했습니다.

필기시험은 잘 못 쳤고, 특히 JS 부분은 오랫동안 복습하지 못했어요.
컴퓨터 문제는 구글의 페이징을 흉내내는 클래스를 작성하는 것입니다. 9/2처럼 가장 큰 정수를 구하고 싶을 때, ceil 함수의 이름이 기억나지 않아서 오랫동안 어지러웠습니다.
결국 테스트 프로그램에서는 오류가 없었는데 그냥 정상적으로 표시가 되지 않더라구요. 나중에(귀국해서) 확인해 보니 for($i=0;$ i;$i<9)을 잘못 적어서 다시 작성해 보니 다음과 같은 코드가 됩니다.

코드 복사 코드는 다음과 같습니다.


/*
표시 스타일은 다음과 같습니다.
[1] 2 3 4 5 6 7 8 9 10 ...100 다음 페이지 마지막 페이지
홈 페이지 페이지 1..12 13 14 15 [16] 17 18 19 20 ...100 다음 페이지 마지막 페이지
홈 페이지 이전 페이지 1..92 93 94 95 96 97 98 [99] 100
사용법:
$currentPage = $_GET['page']?$_GET['page']:1
$pagediv = new pagediv(500, 10, 11, $currentPage, 'test.php?page =') ;
$pagediv->show();
*/
class pagediv
{
public $part1
public $part3; ;
public $part4;
public $part5;
/*
다음 페이징 표시 분할:
홈 페이지 이전 페이지 1..12 13 14 15 [16] 17 18 19 20 .. .100 다음 페이지 마지막 페이지
$part1 : 홈 페이지 이전 페이지
$part2 : 1..
$part3 : 12 13 14 15 [16] 17 18 19 20
$part4 : ... 100
$part5: 다음 페이지 및 마지막 페이지
*/
public $allPage; //총 페이지 수
public $allRocords //총 레코드 수
public $perPage; //모든 페이지 레코드 수
public $showPagesNo; //페이지 표시줄에 총 페이지 수를 표시합니다.
public $currentPage;
public $urlModel; //Url 링크 스타일
public $startHidden; //1이 되면 페이지 번호가 나타납니다... 중간 페이지가 숨겨지기 시작합니다.
public $endHidden; ...100은 중간 페이지 숨기기를 종료합니다
public function __construct($ allRocords, $perPage, $showPagesNo, $currentPage, $urlModel){
$this->allRocords = $allRocords
$this; ->perPage = $perPage;
$this->showPagesNo = $showPagesNo;
$this->currentPage = $currentPage; $this->allPage = $this->getAllPage();
$this->startHidden = $this->getInt(($this->showPagesNo)/2) //6
$this->endHidden = $this->allPage - $this ->startHidden //94
}
공용 함수 getUrl($_index = ''){
$_current = $ _index;
if($_index == 'pre') $_current = $this->currentPage -1
if($_index == 'next') $_current = $this->currentPage 1; ;
if($_index == '') $_current = $ this->allPage
return $this->urlModel.$_current;
공용 함수 getAllPage()
return $this->getInt($this->allRocords /$this->perPage)
}
공용 함수 getInt($_float){
$_int = $_float;
if( $_index = strpos($_float,'.') == true ){
$_int = substr($_float,0,$_index)
$_int
}
//ceil이 기억되지 않는 경우의 대체 계획
return $_int ;
}
public function getPart1(){
$content = '홈페이지 < ;a href="'.$this->getUrl('pre').'">이전 페이지 ';
if($this->currentPage <= $this-> ;startHidden){
$content = ''
}
return $content;
}
공용 함수 getPart2( ){
$content = '1 '; if($this->currentPage > $this-> startHidden){
$add = '...'
}
if($this->currentPage == 1){
$content = '[1] ';
$add = ''
}
$part2 = $content.$add
return $part2; >public function getPart3(){
$content = '' ;
if($this->currentPage <= $this->startHidden){
//[1] 2 3 4 5 6 7 8 9 10 ...100 다음 페이지 마지막 페이지
$long = $this->showPagesNo - 2
for($i=0;$i<$long;$i ){ <🎜; >$j = $i 2;
if($j == $this->currentPage){
$content .= '['.$this->currentPage.']
}else{
$content .= ''.$j.'
}
}
}elseif( $this-> ;currentPage >= $this->endHidden ){
//홈 페이지 이전 페이지 1..92 93 94 95 96 97 98 [99] 100
$long = $this->showPagesNo - 2
$_start = $this->allPage - $long
for($i=0;$i<$long;$i ){
$j = $_start $i;
if($j == $this->currentPage){
$content .= '['.$this->currentPage.'] ';
}else{
$content .= ' '.$j.' ';
}
}
}else{
//홈 페이지 이전 페이지 1..12 13 14 15 [16] 17 18 19 20 ...100 다음 페이지 마지막 페이지
$long = $this->showPagesNo - 2;
$offset = $this->getInt($long/2) - 1
$_start = $this->currentPage - $offset; 🎜>for($i=0;$i<$long;$i ){
$j = $_start $i
if($j == $this->currentPage){
$content .= '['.$this->currentPage.'] '
}else{
$content .= ''.$j.' ';
}
}
}
$part3 = $content;
return $part3;
}
공용 함수 getPart4(){
$content = ' '.$this->allPage.'< /a>
$add = '';
if($this->currentPage < $this->endHidden){
$add = '...'; }
if($this->currentPage == $this->allPage){
$content = '['.$this->allPage.']';
$add = '';
}
$part4 = $add.$content;
$part4 반환;
}
공용 함수 getPart5(){
$content = '
下页尾页';
if($this->currentPage >= $this->endHidden){
$content = '';
}
$content를 반환합니다.
}
공용 함수 show(){
//判断비법
if(!is_numeric($this->currentPage) || $this->currentPage < 0 || $this ->currentPage > $this->allPage){
'error:pageNo is flase';
반환;
}
//总页数没有达到显示分页栏的总页码数,则全part显示
if($this->allPage < $this->showPagesNo){
$ long = $this->allPage;
for($i=0;$i<$long;$i ){
$j = $i 1;
if($j == $this->currentPage){
$content .= '['.$this->currentPage.'] ';
}else{
$content .= ''.$j.' ';
}
}
$content 인쇄;
반환;
}
$this->part1 = $this->getPart1();
$this->part2 = $this->getPart2();
$this->part3 = $this->getPart3();
$this->part4 = $this->getPart4();
$this->part5 = $this->getPart5();
$this->part1.$this->part2.$this->part3.$this->part4.$this->part5;를 인쇄하세요.
}
}
?>

以上就介绍了 PHP 分页类模仿google-side试题目解答,包括了方的内容,希望对PHP教程有兴趣的朋友有所帮助。

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿