php if语句或运算符

时间:2012-11-15 14:16:18

标签: php operators

我正在尝试使用或“||”构建一个php if语句运营商,但似乎没有工作

   $country_code ="example_country_code";

   if ( $country_code != 'example_country_code' || !clientIscrawler()) {
            echo 'the script can be executed';
   }
   else {   
     echo 'skipping';
   }
带有给定示例的

应该跳过跳过但不会发生这种情况。我做错了什么?

5 个答案:

答案 0 :(得分:1)

如果OR运算符有多个条件,在这种情况下您不希望if语句计算为true,则语法为:

if(!($something == "something" || $something == 'somethingelse')){
    do stuff...
}

这里有一个例子:

$apples = array (
 1 => "Pink Lady",
 2 => "Granny Smith",
 3 => "Macintosh",
 4 => "Breaburn"
);

foreach($apples as $apple){

    // You don't wanna echo out if apple name is "Pink Lady" or "Macintosh"

    if(!($apple == "Pink Lady" || $apple == "Macintosh")){

        echo $apple."<br />";

    }
}

// Output is:
Granny Smith
Breaburn

答案 1 :(得分:0)

在您给定的代码中,这一切都取决于您的函数调用

 !clientIscrawler()

仅当函数调用返回script can be executed时,才会获得FALSE输出。我认为它现在正在返回TRUE,这就是为什么你没有得到所需的输出。

答案 2 :(得分:0)

也许双重否定就是给你带来问题,让我们把它重写为:

!($country_code == 'example_country_code') || !clientIscrawler()

这可以与&&

转换为等效条件
!($country_code == 'example_country_code' && clientIscrawler())

通过反转if你会得到这个:

if ($country_code == 'example_country_code' && clientIscrawler()) {
    echo 'skipping';
} else {
    echo 'the script can be executed';
}

因此,在您的代码中,如果clientIscrawler()是真实的,它将仅打印跳过。

答案 3 :(得分:-1)

也许这可以帮到你:

if ( ($country_code != 'example_country_code') || clientIscrawler() == false) {

答案 4 :(得分:-2)

尝试这种方式:

if ( ($country_code != 'example_country_code') || !clientIscrawler()) { ...