If语句作用域中的PHP声明器

If语句作用域中的PHP声明器,php,scope,language-construct,Php,Scope,Language Construct,这是相当基本的。 假设您在if语句中定义了一个变量 if($stmt = $db->prepare($sql)) { // do stuff } 我可以访问if语句下面的$stmt吗? 或者$stmt是否需要在if?之上定义?PHP没有块级范围,只有函数级范围$stmt将在if语句下方的任何位置可用(在if的内部和外部) 但是,需要记住的是,如果在if块中定义新变量,则只有当if计算结果为true时,才会存在新变量 例如: PHP没有块级作用域,只有函数级作用域$stmt将在if语

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

if($stmt = $db->prepare($sql)) {
   // do stuff
}
我可以访问if语句下面的$stmt吗?
或者$stmt是否需要在if?之上定义?

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

但是,需要记住的是,如果在
if
块中定义新变量,则只有当
if
计算结果为
true
时,才会存在新变量

例如:


PHP没有块级作用域,只有函数级作用域
$stmt
将在if语句下方的任何位置可用(在
if
的内部和外部)

但是,需要记住的是,如果在
if
块中定义新变量,则只有当
if
计算结果为
true
时,才会存在新变量

例如:

基本测试:

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

var_dump($stmt);
产出:

int(5)
int(5)
是的,您可以“访问if语句下方的$stmt”。

基本测试:

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

var_dump($stmt);
产出:

int(5)
int(5)

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

为什么不试试呢?但是是的,$stmt将由
if
定义,并在函数的其余部分保持定义状态。@Marc B我尝试过,但是$stmt->错误没有将任何内容记录到我的文本文件中,所以我很怀疑。你为什么不试试呢?但是是的,$stmt将由
if
定义,并在函数的其余部分保持定义状态。@Marc B我尝试过,但$stmt->error没有将任何内容记录到我的文本文件中,因此我很怀疑。因此,您可以在if块中声明,并且变量将存在于if下?不知道。所以你可以在if块中声明,变量将存在于if下面?我不知道。