1

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

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

我可以访问 if 语句下方的 $stmt 吗?或者是否需要在 if 之上定义 $stmt?

4

2 回答 2

4

PHP 没有块级范围,只有函数级范围。$stmt将在 if 语句下方的任何地方可用(在 和 之外if)。

但是要记住,如果您在块内定义新变量,则只有在计算结果为if时才会存在。iftrue

例如:

<?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
于 2015-12-11T20:39:33.837 回答
1

非常基本的测试:

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

var_dump($stmt);

输出:

int(5)
int(5)

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

于 2015-12-11T20:48:12.177 回答