PHP条件语句:不等于操作符


php conditional statement: not equal to operator

我正在尝试使用wordpress:

"如果是不是 92页页面父母是不是 92。"

我有:

<?php if (!is_page(92) || $post->post_parent !== 92) { echo $foo; } ?>

如果我使用一个或另一个作为条件,它工作;当我加入第二个条件时,它就失效了。

任何帮助都将是非常感激的。

干杯!

您的问题可能是使用了||而不是&&

如果你不在第92页并且你不在第92页的子页

假设你在第92页,那么你当前的代码是这样做的:

if (false || true)

因为92不是第92页的父页。因此,由于一个条件为真,它触发。

如果你在92的子页上,那么它是相反的:

if (true || false)

如果你的页面不是92或92的子页面,那么你得到:

if (true || true)

所以,它总是会触发,不管你在哪个页面,因为||只需要一个true语句就可以使整个条件为真。

因此,将代码更改为

<?php if (!is_page(92) && $post->post_parent !== 92) { echo $foo; } ?>

给出如下逻辑运行:

92页

:

if(false && true) //false, won't trigger

92的子页:

if(true && false) //false, won't trigger

一些不相关的页面:

if(true && true) //true, will trigger

您的语句中有一个额外的等号。操作符!==用于布尔检查。因为post_parent会自动解析为"true",因为它有一个值,所以它总是回显"foo"。修改为:

<?php if (!is_page(92) || $post->post_parent != 92) { echo $foo; } ?>

只有!=不!==,只有一个相等的