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

时间:2014-01-27 22:37:43

标签: php function if-statement

在PHP中,我见过很多人使用这个:

if($var1 = myfunction()){
 //do something
}

这样,如果为true,则变量已经保存了您需要的值。

为什么两个变量和两个函数没有相同的工作?

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

 // Do something
}

当我尝试使用上述内容时,我总是得到一个" 1"。即使两个函数都返回一个值。一旦我删除了第二部分($ var2 =) - 它就有效了。

为什么我得到1?

1 个答案:

答案 0 :(得分:3)

这是因为operator precedence

php解释

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

表达为

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

所以:

  • $var2 = myfunction2()首先出现
  • 然后评估myfunction() && $var2
  • 后一个表达式的结果(总是一个布尔值)被分配给$var1

解决方案 - 使用括号

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

更好解决方案:避免使用此类表达