如果变量不是无效值,如何在if if
块中的if语句中对变量进行delcare?
此外,代码中$var
的范围如下:
if(($var = funky()) != null) {}
我可以在$var
区块之外引用if
吗?
答案 0 :(得分:1)
PHP中的赋值表达式返回指定的值。来自t he documentation:
赋值表达式的值是指定的值。
因此,如果funky()
返回的任何内容评估为松散等于null
的内容,$var = funky()
将评估为false,因此if
块将不会被执行。
但是,在if
条件下执行分配不会影响已分配变量的范围。在赋值语句之后,$var
将在当前范围内(在if块之外的和中)。
例如:
function funky() {
return false;
}
if(($var = funky()) != null) {
echo 'something';
}
var_dump($var);
在这里,您只需看boolean false
我能想到确保变量仅在if
块中可用的唯一方法是将其分配到那里并在块结束之前取消设置。
if (funky() != null) { // evaluate funky() without assigning
$var = funky(); // call funky() again to assign
// do stuff
unset($var);
}
但我真的不能想到有任何理由这样做。