PHP-这个if语句会返回true吗?

PHP-这个if语句会返回true吗?,php,if-statement,Php,If Statement,我正试图编辑我的同事的代码(他正在度假,无法联系到),这里有一个if语句: if($this->carrier() == 1 and $this->carrier() == 2) { return 'V'; } 我希望他无意中用了“and”而不是“or”,这可以解释我遇到的一个bug,但他对PHP的了解比我多,我想确定这是错误的,而不是违反直觉。是的。carrier()方法可以在每次调用它时增加它返回的任何值。是的,因为它是一个具有潜在副作用的函数,可能是真的 例如: fu

我正试图编辑我的同事的代码(他正在度假,无法联系到),这里有一个if语句:

if($this->carrier() == 1 and $this->carrier() == 2) {
    return 'V';
}

我希望他无意中用了“and”而不是“or”,这可以解释我遇到的一个bug,但他对PHP的了解比我多,我想确定这是错误的,而不是违反直觉。

是的。
carrier()
方法可以在每次调用它时增加它返回的任何值。

是的,因为它是一个具有潜在副作用的函数,可能是真的

例如:

function carrier() {
    return $someValue++;
}

是的,有一点可能

他调用了一个函数两次,而你还没有包含该函数的文本。这可能是在做一些我们看不到的事情,比如计算这个过程调用它的次数


另一方面,它更可能是一个打字错误。

这是可能的。下面是一个可以运行的工作示例

class program
{
private $i = 1;
function carrier()
{
 $this->i=$this->i+1;
 return $this->i-1;
}

function run()
{
 if ($this->carrier()==1 && $this->carrier()==2)
 {
  echo "works";
 }
 else
 {
  echo "doesnt work" . $i;
 }
}
}

$prog = new Program();
$prog->run();

是的,如果
$this->carrier()
每次调用返回不同的值,它可以。但是如果不是,那么就不是。因此,这条语句是否是错误取决于
$this->carrier()
在做什么。是的,正如大家所说,这是可以的,但是,它不应该以这种方式实现。我建议切换到或,看看它是否解决了您的问题。