PHP声明器In If语句作用域


PHP Declarator In If-Statement Scope

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

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

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

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

非常基本的测试:

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

输出:

int(5)
int(5)

是的,您可以"访问if语句下面的$stm"。