2014-03-26 25 views
0

首先,我知道这已经被问了一百万次,但是我发现的答案没有一个似乎起作用。我已经if语句在我“的header.php页面如下:PHP如果语句总是触发为真

<?php 
$currentpage = $_SERVER['REQUEST_URI']; 
    echo($currentpage); 
    if($currentpage == "/recap-2013.php" || "/index.php") { ?> 
     <script src=... a bunch of HTML 
<?php } ?> 

的想法是插入一些JS如果当前为$等于或者回顾一下,2013.php或index.php文件,如果没有,无所事事。

我在那里添加了echo($currentpage)来检查我的REQUEST_URI是什么。

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

在此先感谢您的帮助!

回答

6

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

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

在当前的逻辑第二个表达式将永远是正确的,因为PHP已经松动输入字符串将作为一个布尔值和一个非空字符串始终是真实的评价。

+0

是的...... if(“/ index.php”)'每次都会给你'true'... – ryanwinchester

+0

谢谢......这正是我所期待的。 – Sgolds

1

它会一直燃烧为真。为什么?你可以看到,不管是什么的第一个条件的结果必将始终处于第二真...

好了,让我们看看...

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

所以第一个条件是:

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

比方说,这样做的结果将是FALSE

所以,让我们进入第二个条件:

if("/index.php") 

肯定始终是TRUE

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

正如我理解你的条件,你想暗示:

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

注意:一定要加倍小心使用条件语句,它总是会让我们的程序员很多。

+0

谢谢!这是很棒的说明。将来肯定会避免这种情况 – Sgolds