2012-06-18 60 views
0

我需要一个在if语句的帮助。我试图根据我在WordPress中加载的页面设置一个名为offset的变量。这里的变量:它加载的第一页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。所以我想创建一个if语句来说明如果$ paged等于0,那么$ offset等于0,否则$ offset等于($ paged * 6 - 6)。

尽管我明白这里需要做什么,但我仍然在为语法而努力。任何帮助将不胜感激。谢谢!

回答

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 = ($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

你可以使用:$offset = max(0, $paged * 6 -6);。其中最大值为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),但它在代码中不重要,只是可读性...