PHP If语句始终触发为true

时间:2014-03-26 23:02:14

标签: 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
<?php } ?>

如果$ currentpage等于recap-2013.php或index.php,那么想要插入一些JS,如果没有,则不做任何操作。

我已在其中添加了echo($currentpage)来检查REQUEST_URI是什么。

问题是,即使请求URI是/someotherpage.php,语句的计算结果为true,JS出现在我的head标签中。我确定这是一件小事,我很想念,但我无法弄清楚是什么。

提前感谢您的帮助!

2 个答案:

答案 0 :(得分:6)

您的if语句逻辑不正确。你的真正含义是:

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

在您当前的逻辑中,第二个表达式将始终为true,因为PHP键入松散,字符串将被计算为布尔值,非空字符串始终为true。

答案 1 :(得分:1)

它总是FIRE为真。为什么?正如你所看到的,无论第一个条件的结果是什么,它都会在第二个条件下顺利而且总是如此......

好的,让我们看看......

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

所以第一个条件是:

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

假设结果是 FALSE

让我们继续第二个条件:

if("/index.php")

SURELY并且总是 TRUE

为什么呢?因为在条件语句中只有FALSE(bool),0,NULL,空字符串等... 被认为是假的。在您的情况下,“/ index.php”不是空字符串,也不是 NULL ,这就是为什么它总是 TRUE

当我了解你的情况时,你试图暗示:

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

注意:总是要小心条件语句,它总是让我们的程序员很多。