php条件语句:不等于运算符
我正在尝试使用 wordpress 执行以下操作:
“如果 NOT 第 92 页,OR 页面父级是 NOT 92.”
这是我所拥有的:
post_parent !== 92) { echo $foo; } ?>
如果我使用其中之一作为条件,它就会起作用;当我添加第二个条件时,它就中断了。
任何帮助将不胜感激。
干杯!
I am trying to do the following with wordpress:
"If is NOT page 92, OR page parent is NOT 92."
Here is what I have:
<?php if (!is_page(92) || $post->post_parent !== 92) { echo $foo; } ?>
If I use one or the other as condition, it works; When I add the second condition, it breaks.
Any help would be well appreciated.
Cheers!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您的问题可能是使用 ||而不是 &&。
如果您不在第 92 页并且您不在第 92 页的子页面中,您希望它回显。
假设您在第 92 页上,那么您当前的代码将执行以下操作:
if (false || true)
因为 92 不是第 92 页的父页。因此,由于一个条件为 true,因此它会触发。
如果您位于 92 的子页面上,则相反:
if (true || false)
如果您位于非 92 的页面或 92 的子页面上,则您会得到:
if (true || true)
因此,无论您在哪个页面,它总是会触发,因为 ||只需要一个 true 语句即可使整个条件为 true。
因此,将代码更改为
post_parent !== 92) { echo $foo; } } ?>
这给出了如下逻辑运行:
Page 92:
if(false && true) //false, won't trigger
92 的子页面:
if(true && false) //false, 不会触发
一些不相关的页面:
if(true && true) //true, 将会触发
Your problem is probably in using || instead of &&.
You want it to echo if you are not on page 92 AND you are not in a subpage of page 92.
Let's say you're on page 92, then your current code does this:
if (false || true)
because 92 is not a parent of page 92. Thus, since one condition is true, it triggers.
If you're on a subpage of 92, then it's the opposite:
if (true || false)
If you're on a page that isn't 92 or a subpage of 92, then you get:
if (true || true)
So, it will always trigger, regardless of what page your on, because || requires only a single true statement for the entire condition to be true.
Hence, change your code to
<?php if (!is_page(92) && $post->post_parent !== 92) { echo $foo; } ?>
Which gives a logical run down like:
Page 92:
if(false && true) //false, won't trigger
Subpage of 92:
if(true && false) //false, won't trigger
Some unrelated page:
if(true && true) //true, will trigger
您的声明中还有一个额外的等号。运算符 !== 用于布尔检查。由于 post_parent 具有值,因此会自动解析为“true”,因此它将始终回显“foo”。将其更改为以下内容。
You have an additional equals sign in your statement. The operator !== is for boolean checks. Since post_parent will automatically resolve to "true" since it has a value, it will always echo "foo". Change it to the following.
只是 != 不是 !==,只有一个相等
It's only != not !==, only one equal