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

PHP-在IF语句中赋值-如果为null,则为false,php,if-statement,null,Php,If Statement,Null,我试图简化一些代码。我发现,如果在if语句中赋值,但该值最终为null,则计算的if为FALSE 例如: if($myvar = doSomething()) { echo '$myvar = '.$myvar; } else { echo "was null"; } function doSomething() { $a = null; return $a; } 上面的脚本将显示“was null”。但是,如果$a=1,那么它将显示“myva

我试图简化一些代码。我发现,如果在if语句中赋值,但该值最终为null,则计算的if为FALSE

例如:

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

function doSomething() { 
    $a = null;
    return $a; 
}
上面的脚本将显示“was null”。但是,如果$a=1,那么它将显示“myvar=1”

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

我的问题:这是预期的行为吗?如果doSomething()返回null,我所做的是否等同于
If(null){…


编辑:是,我的意思是在if语句中“=”不是“=”。我要问的是,这应该总是返回false:
if($a=null)
,而如果($a=1)尝试调用变量中的函数,则返回true

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

您所做的是完全可以预料的。赋值表达式
$a=b
的值就是赋值
b
。因此

if($myvar = doSomething()) { ...
相当于

$myvar = doSomething();
if ($myvar) { ...
此行为与
if
语句完全无关。在第二段中明确指出:

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


您在这一行中犯了错误,请这样更正:
if($myvar==doSomething())
不,我的意思是分配不,在使用ifn进行测试时运行分配是错误的,但我的问题是这是否是预期行为,而不是它是否正确。在我看来,这种逻辑是有效的。当然,如果您运行错误,您可以预期意外。阅读()唯一的问题是,如果我有几个if,ifelse…块,我不想做doSomething()的工作,除非它做得那么远…我知道在if中赋值不是好的编码实践,我只是想知道这是否是预期的。所以你可以简单地使用if条件检查。if($myvar==null){}不,这不太好。必须使用比较运算符进行匹配。