这是我的代码
<?php
if( $_SERVER['REQUEST_URI']!="/index.php?task=join&" || $_SERVER['REQUEST_URI']!="/index.php?task=join&step=1"
|| $_SERVER['REQUEST_URI']!="/index.php?task=join&step=2" ) {
include ("inc/js/script.php");
}
?>
我需要说&#34;如果REQUEST_URI!= /index.php?task=join& &#39;或&#39; /index.php?task=join&step=1'或&#39; /index.php?task=join&step=2&gt;&gt;&gt;包括inc / js / script.php
当我使用&amp;&amp;它工作正常,但我认为正确的答案应该是||
请问有什么不对?
答案 0 :(得分:3)
听起来像你想要&#34; AND&#34; - 或者你可以改变它的意义:
if (! (uri == first || uri == second || uri == third) )
如果您考虑一下,URI就不能同时为&#34; /index.php?task = join&amp;&#34; 和&#34; /index.php?task = join&amp; step = 1&#34;,所以它必须不等于一个 - 所以使用{{1在当前代码中,总是返回true。
答案 1 :(得分:2)
||
表示or
,&&
表示and
。如果or
符合您的要求,请使用||
。
但是,如果您使用||
,则条件将始终评估为true
,因为$_SERVER['REQUEST_URI']
将始终与"/index.php?task=join&"
或"/index.php?task=join&step=1"
不同,因为它不能同时存在。
所以我认为您实际上正在寻找and
条件 - &&
。
此外,您应该使用strcmp
进行字符串比较。
答案 2 :(得分:1)
答案是&&
因为您希望它是AND
,因为您将相同变量 不等于与不同的值进行比较。
您希望变量为not this, not that, *AND* not the other
。
如果它使用OR
(||
),则允许它们中的一个,但只要它不是全部(显然不可能)。< / p>
答案 3 :(得分:1)
如果我理解你想要的东西: 我建议使用$ _GET并按照这样做:
<?php
if ($_SERVER["PHP_SELF"] == "/index.php" && $_GET['task'] == "join" && (isset($_GET['step'] && ($_GET['step'] == 1 || $_GET['step'] == 2)))
include_once("inc/js/script.php");
?>
答案 4 :(得分:1)
您对自己想做的事情的英文描述很好,但是当您开始编码时,就会出现翻译错误。
以下是您想要的行为:
如果REQUEST_URI!= /index.php?task=join& '要么' /index.php?task=join&step=1'或'/index.php?task=join&step=2&gt;&gt;&gt; 包括inc / js / script.php
当你这样说时,很明显“not”(!in!=)适用于所有的URI。因此,让我们分析NOT并使用括号表示它适用于所有内容:
如果不是(REQUEST_URI = /index.php?task=join&'或' /index.php?task=join&step=1'或'/index.php?task=join&step=2)>&gt;&gt; 包括inc / js / script.php
现在让我们从英语到近代码,我们只需要更完整地解释一下:
if ! (REQUEST_URI == /index.php?task=join& or
REQUEST_URI == /index.php?task=join&step=1 or
REQUEST_URI == /index.php?task=join&step=2)
include inc/js/script.php
这实质上是Jon Skeet提出的解决方案。
进一步说明,如果您将|| s更改为&amp;&amp; s,那么这就是您的代码有效的原因。你基本上重新发现了一个众所周知的逻辑规则,称为De Morgan定律(在Salman A的评论中提到),它有两种形式(其中“&lt; ==&gt;”表示“当且仅当”):
根据De Morgan定律的表格1,上述代码与
相同if (!REQUEST_URI == /index.php?task=join& and
!REQUEST_URI == /index.php?task=join&step=1 and
!REQUEST_URI == /index.php?task=join&step=2)
include inc/js/script.php
与
相同if (REQUEST_URI != /index.php?task=join& and
REQUEST_URI != /index.php?task=join&step=1 and
REQUEST_URI != /index.php?task=join&step=2)
include inc/js/script.php
答案 5 :(得分:0)
您是否希望请求uri:
a)不等于任何这些东西(&amp;&amp;)
或
b)不等于这些事物中的一个或多个(或所有)(||)
你想&amp;&amp;我怀疑。