在PHP中,如果($var1=myfunction()&;$var2=myfunction2())失败,为什么语句会失败?

在PHP中,如果($var1=myfunction()&;$var2=myfunction2())失败,为什么语句会失败?,php,function,if-statement,Php,Function,If Statement,在PHP中,我看到很多人都在使用这个: if($var1 = myfunction()){ //do something } 这样,如果为true,则变量已保存所需的值 为什么两个变量和两个函数不能使用相同的方法 if($var1 = myfunction() && $var2 = myfunction2()){ // Do something } 当我试着使用上述方法时,我总是得到一个“1”。即使两个函数都返回一个值。我一移除第二部分($var2=)-它就工作了 为什

在PHP中,我看到很多人都在使用这个:

if($var1 = myfunction()){
 //do something
}
这样,如果为true,则变量已保存所需的值

为什么两个变量和两个函数不能使用相同的方法

if($var1 = myfunction() && $var2 = myfunction2()){

 // Do something
}
当我试着使用上述方法时,我总是得到一个“1”。即使两个函数都返回一个值。我一移除第二部分($var2=)-它就工作了

为什么我会得到1?

这是因为

php解释

$var1 = myfunction() && $var2 = myfunction2()
表达为

$var1 = ( myfunction() && ( $var2 = myfunction2() ) )
因此:

  • $var2=myfunction2()
    排在第一位
  • 然后计算
    myfunction()&&$var2
  • 后一个表达式的结果(始终为布尔值)被分配给
    $var1
解决方案-使用括号

($var1 = myfunction()) && ($var2 = myfunction2())
更好的解决方案是:避免这样的表达

这是因为

php解释

$var1 = myfunction() && $var2 = myfunction2()
表达为

$var1 = ( myfunction() && ( $var2 = myfunction2() ) )
因此:

  • $var2=myfunction2()
    排在第一位
  • 然后计算
    myfunction()&&$var2
  • 后一个表达式的结果(始终为布尔值)被分配给
    $var1
解决方案-使用括号

($var1 = myfunction()) && ($var2 = myfunction2())
更好的解决方案是:避免这样的表达

这是因为

php解释

$var1 = myfunction() && $var2 = myfunction2()
表达为

$var1 = ( myfunction() && ( $var2 = myfunction2() ) )
因此:

  • $var2=myfunction2()
    排在第一位
  • 然后计算
    myfunction()&&$var2
  • 后一个表达式的结果(始终为布尔值)被分配给
    $var1
解决方案-使用括号

($var1 = myfunction()) && ($var2 = myfunction2())
更好的解决方案是:避免这样的表达

这是因为

php解释

$var1 = myfunction() && $var2 = myfunction2()
表达为

$var1 = ( myfunction() && ( $var2 = myfunction2() ) )
因此:

  • $var2=myfunction2()
    排在第一位
  • 然后计算
    myfunction()&&$var2
  • 后一个表达式的结果(始终为布尔值)被分配给
    $var1
解决方案-使用括号

($var1 = myfunction()) && ($var2 = myfunction2())

更好的解决办法是:避免这样的表达

我本来打算在我更长的回答中包括这一点的,但是你抢先告诉了我。非常感谢。但为什么这样的表达方式不好呢?这样我就不用在if语句中再次调用函数了。@gdaniel:不要再调用它了<代码>$var1=f1()$var2=f2();如果($var1&&$var2){}我本来打算在我的长答案中包含这一点,但你比我快。非常感谢。但为什么这样的表达方式不好呢?这样我就不用在if语句中再次调用函数了。@gdaniel:不要再调用它了<代码>$var1=f1()$var2=f2();如果($var1&&$var2){}我本来打算在我的长答案中包含这一点,但你比我快。非常感谢。但为什么这样的表达方式不好呢?这样我就不用在if语句中再次调用函数了。@gdaniel:不要再调用它了<代码>$var1=f1()$var2=f2();如果($var1&&$var2){}我本来打算在我的长答案中包含这一点,但你比我快。非常感谢。但为什么这样的表达方式不好呢?这样我就不用在if语句中再次调用函数了。@gdaniel:不要再调用它了<代码>$var1=f1()$var2=f2();如果($var1&&$var2){}