// Global variable
$a = 0;
function f()
{
// Cannot be accessed outside of f()
if (true)
$b = 0;
// However, it can still be accessed anywhere in f()
$b += 1;
}
字符串 如果你想让一个变量是全局的,只需使用global关键字:
// Global variable
$a = 0;
function f()
{
// Use $a from global scope
global $a;
// Modifies global $a
$a += 1;
}
function g()
{
// Use $b from global scope, even though it hasn't been defined yet
global $b;
// Can be accessed outside of g()
$b = 0;
// Cannot be accessed outside of g(); this $a "shadows" the global version
// The global $a is still 0
$a = 1;
}
4条答案
按热度按时间4ngedf3f1#
在PHP中,
if
没有自己的作用域。所以,是的,如果你在if
语句或块中定义了一些东西,那么它就像你在外部定义它一样可用(当然,假设块中或if
语句中的代码可以运行)。举例说明:
字符串
条件的计算结果为
true
,因此代码块中的代码会运行。变量$a
被定义。型
条件的计算结果为
false
,因此代码块中的代码不会运行。变量$b
不会被定义。型
条件中的代码运行,
$c
定义为5
($c = 5
)。即使赋值发生在if
语句内部,值在外部仍然存在,因为if
没有作用域。for
也会发生同样的情况,就像for ($i = 0, $i < 5; ++$i)
一样。$i
将在for
循环之外继续存在,因为for
也没有作用域。型
false
短路,执行未到达$d = 5
,因此$d
变量将不被定义。有关PHP作用域的更多信息,请阅读variable scope手册页。
rqdpfwrv2#
PHP的作用域是完全基于函数的。它与C或Java不同,它是局部的,变量嵌套在哪个块中。
对于PHP的作用域:
字符串
如果你想让一个变量是全局的,只需使用global关键字:
型
owfi6suc3#
如果执行了包含该变量的
if
语句,则可以在if语句之外访问该变量。这里有一个想法,为什么它的工作方式。在许多编程语言中,你可以在使用变量之前“声明”它,只是为了让编译器知道它在那里。例如,在Java中,你可以声明一个'int',然后像这样使用它:字符串
在Java中,在使用if-then语句之前,你必须声明一个这样的变量。然而,在php中,并没有真正的办法做到这一点。因为php是动态类型的,所以不能写
int $number
。在Java中,当变量被声明时,计算机分配一个32位的内存块(int的大小)。在php中,我相信,内存是不分配的,直到一些东西实际存储在变量中。我能想到的最好的等价于“声明”一个php变量的方法是这样写:型
但是当您查看代码时,像这样编写
$number
似乎有点奇怪。我想计算机也会觉得这很奇怪,因为我之前说过,它是一种动态类型语言,所以它不需要为数字分配一大块内存。所以你可以像这样离开它:型
jecbmhm34#
看情况了
在PHP中,可能是的,当然,如果a不是< B,那么当你到达echo c行时,c就不存在了,你的代码会抱怨。
然而,在大多数语言中,由于这个原因,它不会编译