一个分页导航类_PHP
// +----------------------------------------------------------------------+
// | PHP Version 4 |
// +----------------------------------------------------------------------+
// | Copyright (c) 1997-2002 The PHP Group |
// +----------------------------------------------------------------------+
// | This source file is subject to version 2.02 of the PHP license, |
// | that is bundled with this package in the file LICENSE, and is |
// | available at through the world-wide-web at |
// | http://www.php.net/license/2_02.txt. |
// | If you did not receive a copy of the PHP license and are unable to |
// | obtain it through the world-wide-web, please send a note to |
// | license@php.net so we can mail you a copy immediately. |
// +----------------------------------------------------------------------+
// | Authors: Richard Heyes
// +----------------------------------------------------------------------+
/**
* Pager class
*
* Handles paging a set of data. For usage see the example.php provided.
*
*/
class Pager {
/**
* Current page
* @var integer
*/
var $_currentPage;
/**
* Items per page
* @var integer
*/
var $_perPage;
/**
* Total number of pages
* @var integer
*/
var $_totalPages;
/**
* Item data. Numerically indexed array...
* @var array
*/
var $_itemData;
/**
* Total number of items in the data
* @var integer
*/
var $_totalItems;
/**
* Page data generated by this class
* @var array
*/
var $_pageData;
/**
* Constructor
*
* Sets up the object and calculates the total number of items.
*
* @param $params An associative array of parameters This can contain:
* currentPage Current Page number (optional)
* perPage Items per page (optional)
* itemData Data to page
*/
function pager($params = array())
{
global $HTTP_GET_VARS;
$this->_currentPage = max((int)@$HTTP_GET_VARS['pageID'], 1);
$this->_perPage = 8;
$this->_itemData = array();
foreach ($params as $name => $value) {
$this->{'_' . $name} = $value;
}
$this->_totalItems = count($this->_itemData);
}
/**
* Returns an array of current pages data
*
* @param $pageID Desired page ID (optional)
* @return array Page data
*/
function getPageData($pageID = null)
{
if (isset($pageID)) {
if (!empty($this->_pageData[$pageID])) {
return $this->_pageData[$pageID];
} else {
return FALSE;
}
}
if (!isset($this->_pageData)) {
$this->_generatePageData();
}
return $this->getPageData($this->_currentPage);
}
/**
* Returns pageID for given offset
*
* @param $index Offset to get pageID for
* @return int PageID for given offset
*/
function getPageIdByOffset($index)
{
if (!isset($this->_pageData)) {
$this->_generatePageData();
}
if (($index % $this->_perPage) > 0) {
$pageID = ceil((float)$index / (float)$this->_perPage);
} else {
$pageID = $index / $this->_perPage;
}
return $pageID;
}
/**
* Returns offsets for given pageID. Eg, if you
* pass it pageID one and your perPage limit is 10
* it will return you 1 and 10. PageID of 2 would
* give you 11 and 20.
*
* @params pageID PageID to get offsets for
* @return array First and last offsets
*/
function getOffsetByPageId($pageid = null)
{
$pageid = isset($pageid) ? $pageid : $this->_currentPage;
if (!isset($this->_pageData)) {
$this->_generatePageData();
}
if (isset($this->_pageData[$pageid])) {
return array(($this->_perPage * ($pageid - 1)) + 1, min($this->_totalItems, $this->_perPage * $pageid));
} else {
return array(0,0);
}
}
/**
* Returns back/next and page links
*
* @param $back_html HTML to put inside the back link
* @param $next_html HTML to put inside the next link
* @return array Back/pages/next links
*/
function getLinks($back_html = '>')
{
$url = $this->_getLinksUrl();
$back = $this->_getBackLink($url, $back_html);
$pages = $this->_getPageLinks($url);
$next = $this->_getNextLink($url, $next_html);
return array($back, $pages, $next, 'back' => $back, 'pages' => $pages, 'next' => $next);
}
/**
* Returns number of pages
*
* @return int Number of pages
*/
function numPages()
{
return $this->_totalPages;
}
/**
* Returns whether current page is first page
*
* @return bool First page or not
*/
function isFirstPage()
{
return ($this->_currentPage == 1);
}
/**
* Returns whether current page is last page
*
* @return bool Last page or not
*/
function isLastPage()
{
return ($this->_currentPage == $this->_totalPages);
}
/**
* Returns whether last page is complete
*
* @return bool Last age complete or not
*/
function isLastPageComplete()
{
return !($this->_totalItems % $this->_perPage);
}
/**
* Calculates all page data
*/
function _generatePageData()
{
$this->_totalItems = count($this->_itemData);
$this->_totalPages = ceil((float)$this->_totalItems / (float)$this->_perPage);
$i = 1;
if (!empty($this->_itemData)) {
foreach ($this->_itemData as $value) {
$this->_pageData[$i][] = $value;
if (count($this->_pageData[$i]) >= $this->_perPage) {
$i++;
}
}
} else {
$this->_pageData = array();
}
}
/**
* Returns the correct link for the back/pages/next links
*
* @return string Url
*/
function _getLinksUrl()
{
global $HTTP_SERVER_VARS;
// Sort out query string to prevent messy urls
$querystring = array();
if (!empty($HTTP_SERVER_VARS['QUERY_STRING'])) {
$qs = explode('&', $HTTP_SERVER_VARS['QUERY_STRING']);
for ($i = 0, $cnt = count($qs); $i
list($name, $value) = explode('=', $qs[$i]);
if ($name != 'pageID') {
$qs[$name] = $value;
}
unset($qs[$i]);
}
}
if(is_array($qs)){
foreach ($qs as $name => $value) {
$querystring[] = $name . '=' . $value;
}
}
return $HTTP_SERVER_VARS['SCRIPT_NAME'] . '?' . implode('&', $querystring) . (!empty($querystring) ? '&' : ') . 'pageID=';
}
/**
* Returns back link
*
* @param $url URL to use in the link
* @param $link HTML to use as the link
* @return string The link
*/
function _getBackLink($url, $link = '
{
// Back link
if ($this->_currentPage > 1) {
$back = '' . $link . '';
} else {
$back = ';
}
return $back;
}
/**
* Returns pages link
*
* @param $url URL to use in the link
* @return string Links
*/
function _getPageLinks($url)
{
// Create the range
$params['itemData'] = range(1, max(1, $this->_totalPages));
$pager =& new Pager($params);
$links = $pager->getPageData($pager->getPageIdByOffset($this->_currentPage));
for ($i=0; $i
$links[$i] = '' . $links[$i] . '';
}
}
return implode(' ', $links);
}
/**
* Returns next link
*
* @param $url URL to use in the link
* @param $link HTML to use as the link
* @return string The link
*/
function _getNextLink($url, $link = 'Next >>')
{
if ($this->_currentPage _totalPages) {
$next = '' . $link . '';
} else {
$next = ';
}
return $next;
}
}
?>

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











C 언어에서 if 문은 일반적으로 단일 조건에 따라 특정 코드 블록을 실행하는 데 사용됩니다. 그러나 여러 조건을 결합하여 &&, || 및 !와 같은 논리 연산자를 사용하여 결정을 내릴 수 있습니다. 여러 조건을 판단하기 위해 논리적 AND(&&)를 사용하고, 하나 이상의 조건을 판단하기 위해 논리적 OR(||)를 사용하고, 단일 조건의 부정을 판단하기 위해 논리적 NOT(!)을 사용하고, if 문을 중첩하고 괄호를 사용하는 것을 포함합니다. 우선순위를 명확히 하기 위해.

C 언어에서 return의 사용법은 다음과 같습니다. 1. 반환 값 유형이 void인 함수의 경우 return 문을 사용하여 함수 실행을 조기에 종료할 수 있습니다. 2. 반환 값 유형이 void가 아닌 함수의 경우 return 문은 함수 실행을 종료하는 것입니다. 결과는 호출자에게 반환됩니다. 3. 함수 실행을 조기에 종료합니다. 함수 내부에서는 return 문을 사용하여 함수 실행을 조기에 종료할 수 있습니다. 함수가 값을 반환하지 않는 경우.

기계력 보고서 편집자: 우신(Wu Xin) 국내판 휴머노이드 로봇+대형 모델팀이 옷 접기 등 복잡하고 유연한 재료의 작업 작업을 처음으로 완료했습니다. OpenAI 멀티모달 대형 모델을 접목한 Figure01이 공개되면서 국내 동종업체들의 관련 진전이 주목받고 있다. 바로 어제, 중국의 "1위 휴머노이드 로봇 주식"인 UBTECH는 Baidu Wenxin의 대형 모델과 긴밀하게 통합되어 몇 가지 흥미로운 새로운 기능을 보여주는 휴머노이드 로봇 WalkerS의 첫 번째 데모를 출시했습니다. 이제 Baidu Wenxin의 대형 모델 역량을 활용한 WalkerS의 모습은 이렇습니다. Figure01과 마찬가지로 WalkerS는 움직이지 않고 책상 뒤에 서서 일련의 작업을 완료합니다. 인간의 명령을 따르고 옷을 접을 수 있습니다.

"Amap Navigation" 소프트웨어의 축구 내비게이션 음성 패키지는 Amap 지도의 자동차 버전용 내비게이션 음성 패키지 중 하나입니다. 내용은 Huang Jianxiang의 축구 해설 버전의 내비게이션 음성입니다. 설정 방법: 1. Amap 소프트웨어를 엽니다. 2. "추가 도구" - "내비게이션 음성" 옵션을 클릭합니다. 3. "Huang Jianxiang Passionate Voice"를 찾아 "다운로드"를 클릭합니다. , "음성 사용"을 클릭하세요.

소스 코드: publicclassReturnFinallyDemo{publicstaticvoidmain(String[]args){System.out.println(case1());}publicstaticintcase1(){intx;try{x=1;returnx;}finally{x=3;}}}# 출력 위 코드의 출력은 간단히 결론을 내릴 수 있습니다. return은 finally 전에 실행됩니다. 바이트코드 수준에서 무슨 일이 일어나는지 살펴보겠습니다. 다음은 case1 메소드의 바이트코드 일부를 가로채서 소스 코드를 비교하여 각 명령어의 의미를 주석으로 표시합니다.

Baidu Map App의 Android 및 iOS 버전 모두 최초로 신호등 레이더 기능을 도입한 버전 18.8.0을 출시하여 업계를 선도하고 있습니다. 공식 소개에 따르면 신호등 레이더를 켠 후 자동 감지를 지원합니다. Beidou High-Precision은 실시간으로 위치를 파악할 수 있으며, 전국 100만 개 이상의 신호등이 자동으로 녹색 물결 알림을 실행합니다. 또한 새로운 기능은 완전 무음 내비게이션을 제공하여 지도 영역을 더욱 간결하게 만들고 주요 정보를 한눈에 명확하게 하며 음성 방송을 제공하지 않아 운전자가 운전에 더 집중할 수 있도록 합니다. 2020년 10월 실시간 카운트다운 예측을 지원하는 내비게이션은 신호등 교차로에 접근할 때 남은 카운트다운 초를 자동으로 표시하여 사용자가 항상 전방의 도로 상황을 파악할 수 있도록 합니다. 2022년 12월 31일까지 신호등 카운트다운

내비게이션 지도의 가로 숫자 8은 안개를 의미하고, 보통은 노란색 8 경고 신호, 심각은 주황색 8 경고 신호를 의미합니다.

4월 29일 이 사이트의 소식에 따르면 Amap은 ETA 운전의 업그레이드 버전 출시를 공식적으로 발표했습니다. 현재 순간부터 지정된 경로를 따라 목적지까지 이동) 서비스는 사용자가 보다 정확한 경로 계획 기간 및 교통 상황을 추정하고 여행 결정을 내리는 데 도움을 주는 것을 목표로 합니다. 이 지도 애플리케이션은 최신 업그레이드된 Amap 앱으로, 교통 흐름 패턴을 더 잘 포착하고 학습할 수 있으며 도시 도로 네트워크 및 고속도로 시스템을 지원하고 시공간을 정확하게 묘사할 수 있는 "초대형 그래프 컨볼루션 신경망 모델"을 도입합니다. 교통 상황의 역동적인 변화. 또한 새 버전의 지도에는 iTransformer 시계열 예측 모델이 추가로 통합되어 실시간 분석을 지원합니다.
