我正在尝试使用或“||”构建一个php if语句运营商,但似乎没有工作
$country_code ="example_country_code";
if ( $country_code != 'example_country_code' || !clientIscrawler()) {
echo 'the script can be executed';
}
else {
echo 'skipping';
}
带有给定示例的应该跳过跳过但不会发生这种情况。我做错了什么?
答案 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()) { ...