PHP - 在 IF 语句中赋值 - 如果为 null,则为 false

NEW*_*WEB 1 php null if-statement

我正在尝试简化一些代码。我发现,如果您在 if 语句中分配一个值,但该值最终为 null,则计算出的 if 为 FALSE。

例子:

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

function doSomething() { 
    $a = null;
    return $a; 
}
Run Code Online (Sandbox Code Playgroud)

上面的脚本将显示“was null”。然而,如果$a = 1,那么它将显示“myvar = 1”。

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

我的问题:这是预期的行为吗?如果 doSomething() 返回 null,我正在做的事情相当于吗if(null) {...

编辑:是的,我的意思是 if 语句中的“=”而不是“==”。我要问的是,预计这应该始终返回 false:if($a = null)而这返回 trueif($a = 1)

Rei*_*ica 5

你正在做的事情是完全符合预期的。赋值表达式的值$a=b就是被赋值的值b。所以,

if($myvar = doSomething()) { ...
Run Code Online (Sandbox Code Playgroud)

相当于

$myvar = doSomething();
if ($myvar) { ...
Run Code Online (Sandbox Code Playgroud)

这种行为与声明完全无关if该文件在第二段中明确指出:

赋值表达式的值就是被赋值的值。即“$a = 3”的值为3。