如果变量不是空值,如何在 if 语句中删除仅出现在 if
block 中的变量?
此外,代码中 $var
的范围是多少:
if(($var = funky()) != null) {}
我可以在 if
block 之外引用 $var
吗?
最佳答案
PHP 中的赋值表达式返回指定的值。来自he documentation :
The value of an assignment expression is the value assigned.
因此,如果 funky()
返回的值大致等于 null
,则 $var = funky()
将计算为 false,因此 if
block 将不会被执行。
不过,在 if
条件中进行赋值不会影响所赋值变量的范围。在赋值语句之后,$var
将在当前范围内(在 if block 内部和内)可用。
例如:
function funky() {
return false;
}
if(($var = funky()) != null) {
echo 'something';
}
var_dump($var);
在这里,您只会看到boolean false
我能想到的确保变量仅在 if
block 内可用的唯一方法是在那里分配它并在 block 结束之前取消设置它。
if (funky() != null) { // evaluate funky() without assigning
$var = funky(); // call funky() again to assign
// do stuff
unset($var);
}
但我真的想不出这样做的任何充分理由。
关于PHP - if 语句中的赋值范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43765542/