在PHP中,如果没有自己的范围。那么是的,如果你在if语句或块内部定义一些内容,那么就像在外部定义它一样(假定当前块内的代码或if语句里面的代码运行)就可以了。
为了显示:
if (true) { $a = 5; } var_dump($a == 5); // true
条件计算结果为true,因此块内的代码将被运行。变量$ a被定义。
if (false) { $b = 5; } var_dump(isset($b)); // false
条件评估为false,因此块中的代码不会运行。变量$ b将不被定义。
if ($c = 5) { } var_dump($c == 5); // true
条件中的代码运行,$ c被定义为5($ c = 5)。即使赋值发生在if语句中,该值仍然存在于外部,因为如果没有作用域。就像在(例如,$ i = 0,$ i <5; $ i)中一样。 $ i将在for循环之外生存,因为也没有范围。
if (false && $d = 5) { } var_dump(isset($d)); // false
假短路和执行不到达$ d = 5,所以$ d变量将不被定义。
有关PHP范围的更多信息,请阅读variable scope手册页。