PHP If语句始终作为true启动

PHP If语句始终作为true启动,php,if-statement,Php,If Statement,首先,我知道这个问题已经被问过一百万次了,但我找到的答案似乎都不起作用。在我的“Header.php”页面中有以下if语句: <?php $currentpage = $_SERVER['REQUEST_URI']; echo($currentpage); if($currentpage == "/recap-2013.php" || "/index.php" ) { ?> <script src=... a bunch of HTML <

首先,我知道这个问题已经被问过一百万次了,但我找到的答案似乎都不起作用。在我的“Header.php”页面中有以下if语句:

<?php
$currentpage = $_SERVER['REQUEST_URI'];
    echo($currentpage);
    if($currentpage == "/recap-2013.php" || "/index.php" ) { ?>
        <script src=... a bunch of HTML
<?php } ?>
如果$currentpage等于recap-2013.php或index.php,则插入一些JS,如果不等于,则不执行任何操作

我在那里添加了echo$currentpage来检查我的请求URI是什么

问题是,即使请求URI是/someotherpage.php,语句的计算结果也是true,并且JS出现在我的head标记中。我肯定我遗漏了一些小东西,但我不知道是什么


提前感谢您的帮助

您的if语句逻辑不正确。你真正的意思是:

if($currentpage == "/recap-2013.php" || $currentpage == "/index.php" ) { ?>

在当前逻辑中,第二个表达式将始终为true,因为PHP具有松散类型。字符串将作为布尔值计算,非空字符串始终为true。

它将始终作为true激发。为什么?正如你所看到的,无论第一个条件的结果如何,它在第二个条件下肯定永远是正确的

好吧,让我看看

if($currentpage == "/recap-2013.php" || "/index.php" )
因此,第一个条件是:

if($currentpage == "/recap-2013.php")
假设这一结果是错误的

那么让我们继续第二个条件:

if("/index.php")
一定要永远是真的

为什么??因为在条件语句中只有FALSEbool、0、NULL、空字符串等。。。 被认为是错误的。在您的情况下,/index.php既不是空字符串,也不是NULL,这就是为什么它总是为真

正如我对你的情况所了解的,你试图暗示:

if($currentpage == "/recap-2013.php" || $currentpage == "/index.php" )

注意:使用条件语句时一定要小心,它总是让我们程序员受益匪浅。

谢谢。。。这正是我想要的。谢谢!这是令人敬畏的澄清。将来肯定会避免这种情况