PHP - 在IF语句中分配值 - 如果为null则为false

时间:2014-07-21 05:52:55

标签: php if-statement null

我试图简化一些代码。我发现如果你在if语句中分配一个值,但是这个值最终为null,那么得到的if为FALSE。

示例:

if($myvar = doSomething()) {   
    echo '$myvar = '.$myvar;
} 
else { 
    echo "was null"; 
}

function doSomething() { 
    $a = null;
    return $a; 
}

上面的脚本将显示"为空"。但是,如果$ a = 1,那么它将显示" myvar = 1"。

我试图找到一些关于这种行为的文档,但还没有成功。我的所有资料来源都很接近,但不能很好地描述它。

我的问题:这是预期的行为吗?如果doSomething()返回null,那么我做的是if(null) {...吗?

编辑:是的我是说' ='不是' =='在if语句中。我要问的是,它应该总是返回false:if($a = null)而这会返回true if($a = 1)

3 个答案:

答案 0 :(得分:2)

你正在做的事情是完全可以预料到的。赋值表达式$a=b的值是赋值b。所以,

if($myvar = doSomething()) { ...

相当于

$myvar = doSomething();
if ($myvar) { ...

此行为与if语句完全无关。 The documentation在第二段中明确指出:

  

赋值表达式的值是指定的值。也就是说,“$ a = 3”的值是3。

答案 1 :(得分:0)

问题出在这里:

$myvar = doSomething()

应该是

$myvar == doSomething()

您现有的条件将始终评估为TRUE,因为=运算符每次都会返回TRUE! :)

目前正在发生什么

doSomething()返回null 所以:

if(a = null) => if(null)

此条件表示false,因此控件转到else部分

doSomething()返回值= 1,2 ..... n

if($a = 2 ) => if(2)

此条件表示true,因此执行if

答案 2 :(得分:-1)

尝试在变量中调用函数。

$getvar = doSomething();
if($myvar == $getvar) {
 // stuff
}