【发布时间】:2014-02-22 09:10:44
【问题描述】:
我的脚本有一个小问题,我无法自己解决。研究了有关变量范围的 PHP 文档后,我不确定这是否可行。
举个例子:
function my_funct_a() {
// Do stuff
return $a;
}
function my_funct_b() {
// Do other stuff
return $a + $b;
}
你看,问题是在my_funct_b 中,$a 不可用,因为它在my_funct_a 中声明(并返回)。
通常我会将此变量作为参数传递,但由于某种框架限制,此时这是不可能的。
所以我试着这样做:
function my_funct_a() {
// Do stuff
global $a;
return $a;
}
function my_funct_b() {
// Do other stuff
global $a;
return $a + $b;
}
这也不起作用,我认为是因为global“反过来”起作用。与其在函数内部将变量声明为全局变量以使其在函数外部可用,不如将其声明为函数外部的全局变量以便在函数内部可用。
问题是$a的值是在my_funct_a中创建的,所以在知道值之前我不能全局化它。
因此,我尝试这样做:
// global variable, but no value assigned yet
global $a
function my_funct_a() {
// Do stuff
global $a;
$a = 1;
return $a;
}
function my_funct_b() {
// Do other stuff
global $a;
return $a + $b;
}
这也不起作用。为什么?甚至可以不将变量作为参数传递吗?
【问题讨论】:
-
这是类代码吗?
-
在
my_funct_b(),你如何得到$b?my_funct_a()btw 的同样问题。 -
@DonCallisto 否,该项目中使用了过程 PHP。
-
@Jack
$a是在该函数内部创建的动态值,$b是使用该动态值的字符串。恐怕我必须使用这两个功能来实现它 -
您对
global工作原理的理解是错误的。您在函数内部声明它,它允许该函数访问具有该名称的全局变量。您的第二次尝试应该成功了。
标签: php global-variables scope