和或运算符php问题?

时间:2010-11-25 12:25:47

标签: php operators

嘿伙计们, 我对此感到困惑:

forceAnim: <?php echo (is_singular() || $iphone) ? 0 : 1; ?>

我在一个函数中有这个forceAnim参数,可以是0或1。 is_singular表示显示特定类型的页面$ iphone表示它在iPhone上查看。

如果在iphone上查看,我希望forceAnmi ALWAYS为0,如果is_singular返回true,我希望forceAnim为0。

诀窍是什么?目前如果在iphone上查看单个页面forceAnim是1。

关于亚光

编辑:

echo $iphone; //returns 1 only if on iphone
echo is_singular(); //returns 1 only if i'm on a singular page

两个变量都返回1,但它们是真的。所以,如果我在iPhone上iphone返回1,但如果我不在iphone上iphone $ iphone不会返回任何东西(不是0) 这同样适用于is_singular()!

4 个答案:

答案 0 :(得分:1)

正如其他人所指出的那样,请务必检查is_singular()的返回内容以及$iphone的值是多少。可能是价值不是你所期望的那样。

另一方面,如何用“

”来“简化”它

forceAnim: <?php echo (int)(is_singular() || $iphone); ?>

答案 1 :(得分:0)

尝试将整个三元语句放在括号中。 PHP的运算符优先级规则将使echo回显出语句的if()部分的结果,而不是if()的结果:

forceAnim: <?php echo ((is_singular() || $iphone) ? 0 : 1); ?>
                      ^-add this                         ^-and this

答案 2 :(得分:0)

只需替换两个操作数:($iphone || is_sungular()) ? 0 : 1

如果第一个操作数为true,则

OR运算符不执行第二个操作数。这意味着,如果$iphone为真,那么is_singular()将无法执行。

答案 3 :(得分:0)

语法是正确的。您应该检查“is_singular”的返回值和$ iphone中的值,因为这两个似乎都“评估”(!)到(布尔值)false。由于PHP是一种松散类型的语言,并且你在布尔上下文中使用这些变量(||),它们会被静默转换为bool - 并且两者都被转换为false,从而导致表达式为(int)1 - 再次以静默方式转换为(string)1,因为“echo”是一个字符串上下文。