2012-06-18 3 views
0

PHP의 if 문에 대한 약간의 도움이 필요합니다. WordPress에서로드하는 페이지에 따라 오프셋이라는 변수를 설정하려고합니다.구문 if 문 문제 (PHP)

이 첫 페이지를로드 그것이 무엇이다
$offset = ($paged * 6); 

입니다 :

http://example.com/blog

을 따라서 0으로 설정 오프셋 $ 페이징 $ 때문에 첨부 된 번호를 참조 여기에 변수이다 URL에. 두 번째 페이지는, 예를 들면 :

http://example.com/blog/2/

$, 난 $가 $ 12로 오프셋을 정의하는 6 번째 페이지와 오프셋을 정의하는 두 번째 페이지를 필요로하는 문제가있다 (12)에 설정된 오프셋 만든다 등등. 나는 시도했다 :

$offset = ($paged * 6 - 6) 

첫 페이지를 제외하고 작동합니다. 첫 번째 페이지에서 $ offset은 -6으로 정의됩니다. 그래서, $ paged가 0이면 $ offset이 0이고, $ offset이 ($ paged * 6 - 6)과 같다는 if 문을 작성하려고합니다.

나는 여기에서해야 할 일이 무엇인지 알고 있지만 구문에 어려움을 겪고 있습니다. 어떤 도움이라도 대단히 감사하겠습니다. 감사! 이 쉽게 하나의 공식으로 통합 할 수없는 두 개의 서로 다른 경우이기 때문에

답변

4

if 문 사용

if ($paged == 0) 
    $offset = 0; 
else 
    $offset = ($paged - 1) * 6; 

당신은 ternary operator를 사용하여이 짧은을 쓸 수 있습니다, 그러나 나는 위의 if 문이 더 생각 읽기 :

$offset = ($paged == 0) ? 0 : ($paged - 1) * 6; 
+0

완벽한 덕분에! – MillerMedia

0

대안 :

if($paged == 0) $paged = 1; 
$offset = ($paged - 1) * 6; 
$offset = max(0, $paged * 6 -6);을 :

또는

$offset = ($paged) ? ($paged - 1) * 6 : 0; 
+0

페이지 0과 1은 같을 것입니다 ... : D – jadkik94

+0

@ jadkik94 네,하지만 그게 무슨 문제입니까? – Rifat

+0

좋아, 신경 쓰지 마, 그건 OP가 원하는거야. 그냥 바보 같은 코멘트 야. – jadkik94

0

당신은 당신이 사용할 수있는 다음과 같은 한 줄의 코드를

$offset = max(($paged - 1) * 6, 0); 
+0

'max()'해결책은 영리하면서 미래의 관리자에게 혼란 스러울 수있다. –

+0

예, 아니오 ... 또한 간단한 트릭을 배울 수 있습니다. :-) – FatalError

+0

"간단한 트릭"과 "유지 보수성"사이에는 종종 충돌이 있습니다. 그렇지 않으면 모두가 행복한 Perl 코더가 될 것입니다. –

0

를 사용할 수 있습니다. 어느 것이 최대 값과 다른 값을 취합니다. 다른 값이 음수이면 0이 결과가됩니다.

이제 사용하기 if 문, 이것은 당신이 어떻게 할 것입니다 :

$offset = $paged * 6 - 6; 
if ($offset < 0) { 
    $offset = 0; 
} 

또는 :

if ($paged == 0) { 
    $offset = 0; 
} else { 
    $offset = $paged * 6 - 6; 
} 

을 그리고 당신은이 간단한 경우에 삼항 연산자를 사용 할 수 있습니다 : (위로 똑같은 일을)

$offset = ($paged == 0)? 0: ($paged * 6 - 6); 

참고 : 6 * a-6 = 6 * (a-1)을 대체 할 수 있지만 코드에는 중요하지 않습니다. 단지 가독성 ...