PHP或运算符是否有问题?

PHP或运算符是否有问题?,php,Php,我的转储变量显示在它们的页面上: if ($_SERVER['REMOTE_ADDR'] == '44.71.45.98' OR '44.71.45.99') { //blah blah }else{ //blah } 我知道这是错误的,但当我尝试…它在我的另一台计算机上工作。即使我知道这是错误的,它也没有提示我错误 通常我会编写或类似以下代码: //this is correct if(isset($a) or isset($b)){ } 是的,应该是: if ($_SERVER

我的转储变量显示在它们的页面上:

if ($_SERVER['REMOTE_ADDR'] == '44.71.45.98' OR '44.71.45.99') {
  //blah blah
}else{
  //blah
}
我知道这是错误的,但当我尝试…它在我的另一台计算机上工作。即使我知道这是错误的,它也没有提示我错误

通常我会编写或类似以下代码:

//this is correct
if(isset($a) or isset($b)){

}
是的,应该是:

if ($_SERVER['REMOTE_ADDR'] == '44.71.45.98' or $_SERVER['REMOTE_ADDR'] == '44.71.45.99') ...
if ($_SERVER['REMOTE_ADDR'] == '44.71.45.98' || $_SERVER['REMOTE_ADDR'] == '44.71.45.99')

“or”(或“| |”)将布尔表达式(真或假)组合在一起(例如使用“==”进行比较)。在原始代码中,它将第二个IP字符串转换为布尔值——值为true——因此if语句将始终匹配。

您的表达式不正确。应该是这样的:

if ($_SERVER['REMOTE_ADDR'] == '44.71.45.98' OR
    $_SERVER['REMOTE_ADDR'] == '44.71.45.99')
或者99%的开发者是如何做到这一点的:

if ($_SERVER['REMOTE_ADDR'] == '44.71.45.98' ||
    $_SERVER['REMOTE_ADDR'] == '44.71.45.99')

我更喜欢使用IP阵列(如果不止一个)


这里需要使用逻辑OR运算符

您的代码应该是这样的

if($_SERVER['REMOTE_ADDR'] == '44.71.45.98' || $_SERVER['REMOTE_ADDR'] == '44.71.45.99'){
    code if condition is true..
}
else{
  code if condition is false..
}
我也可以用这种方法做

if($_SERVER['REMOTE_ADDR'] == '44.71.45.98' or $_SERVER['REMOTE_ADDR'] == '44.71.45.99')

这里我更喜欢使用| | as或操作符。代码应为:

if ($_SERVER['REMOTE_ADDR'] == '44.71.45.98' or $_SERVER['REMOTE_ADDR'] == '44.71.45.99') ...
if ($_SERVER['REMOTE_ADDR'] == '44.71.45.98' || $_SERVER['REMOTE_ADDR'] == '44.71.45.99')

我昨天已经试过了…但我收到一个错误。。我试过这个。。。如果($\u SERVER['REMOTE\u ADDR']='44.71.45.98'或$\u SERVER['REMOTE\u ADDR']='44.71.45.99')删除该pre…如果对php版本进行测试,您会明白我的意思…$\u SERVER['REMOTE\u ADDR']='44.71.45.98'或'44.71.45.99'这并没有提示我一个错误…我不明白…这是不正确的,非空字符串计算为true,所以基本上你会得到if(false或true),代码将被执行,我使用OR而不是| |,因为这个。。。或在2.69412994438477E中执行我的hello world-5 | |在2.7894973754883E中执行我的hello world-5@mocca没有性能差异,您认为的差异只是随机噪声和不准确,因为您只执行了一次代码,而许多其他进程同时在您的计算机上执行。。。这些绝对不是可靠的结果。@Col.Shrapnel谁会这样评论?试图回答问题的新用户。建设性的批评是有益的。事实上,你的回答与“有用”完全相反。@BrendanBullen如果你不识字,我不是在评论这个胡说八道的答案,而是那些对它投了赞成票的人。@Col.Shrapnel评论不是进行此类讨论的地方,但我会说,以否定的方式强调答案的回应(大写)是不必要的,也是鲁莽的。考虑到你的声誉,我原以为你会知道不要发表这样一条毫无帮助的评论。这只是评论,我修正了我的答案。感谢@BrendanBullen的好意评论。当然它正在另一台计算机上工作。。这是因为表达式的第二部分,
'44.71.45.99'
的计算结果总是
true
。您需要将它与一些东西进行比较。您应该学习一些非常基本的编程知识,然后尝试进行编程。@mocca试图解释为什么您的问题遭到如此多的反对票:这是可以在任何最基本的PHP教程中找到的东西。了解逻辑运算符的多个条件的使用对于大部分编程语言来说是必不可少的。在这种情况下,你的问题可能被解释为“没有显示任何研究成果”。希望能帮上忙。“布伦达,我知道这是错的。我已经6年的电脑编程了。我在那个问题之后加了一个音符。这是当有人问一个非常基本的问题时会发生的事情。C++是一样的。printf(“%d”,(x==w | | x==y | | x==z));