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()!
答案 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
。
OR
运算符不执行第二个操作数。这意味着,如果$iphone
为真,那么is_singular()
将无法执行。
答案 3 :(得分:0)
语法是正确的。您应该检查“is_singular”的返回值和$ iphone中的值,因为这两个似乎都“评估”(!)到(布尔值)false。由于PHP是一种松散类型的语言,并且你在布尔上下文中使用这些变量(||),它们会被静默转换为bool - 并且两者都被转换为false,从而导致表达式为(int)1 - 再次以静默方式转换为(string)1,因为“echo”是一个字符串上下文。