If语句范围中的PHP声明符

时间:2015-12-11 20:34:39

标签: php scope language-construct

这是非常基本的。 我们假设你在if语句中定义一个变量

if($stmt = $db->prepare($sql)) {
   // do stuff
}

我可以在if语句下面访问$ stmt吗? 或者是否需要在if?

之上定义$ stmt

2 个答案:

答案 0 :(得分:3)

PHP没有块级范围,只有功能级范围。 $stmt将在if语句下方的任何位置(if内外)。

但要注意的是,如果在if块中定义新变量,则仅在if评估为true时才存在。

例如:

<?php
$var1 = true;
if ($var2 = false) { 
    $var3 = true; // this does not get executed
} else {
    $var4 = 5;
}
var_dump($var1); // true
var_dump($var2); // false
var_dump($var3); // ERROR - undefined variable $var3
var_dump($var4); // 5

答案 1 :(得分:1)

非常基本的测试:

if ($stmt = 5) {
    var_dump($stmt);
}

var_dump($stmt);

输出:

int(5)
int(5)

是的,您可以“在if语句下方访问$ stmt”。