我很抱歉,如果之前已经回答过 - 我搜索过但无法找到明确的答案。
如果我的函数foo()
处理变量$x
,然后是子函数bar()
,我该如何访问$x
?
function foo(){
$x = 0;
function bar(){
//do something with $x
}
}
这段代码是否正确,或者是否有更好的实践来访问父函数中的变量?
答案 0 :(得分:1)
请注意在子函数中使用全局变量:
这将无法正常工作......
<?php
function foo(){
$f_a = 'a';
function bar(){
global $f_a;
echo '"f_a" in BAR is: ' . $f_a . '<br />'; // doesn't work, var is empty!
}
bar();
echo '"f_a" in FOO is: ' . $f_a . '<br />';
}
?>
这将...
<?php
function foo(){
global $f_a; // <- Notice to this
$f_a = 'a';
function bar(){
global $f_a;
echo '"f_a" in BAR is: ' . $f_a . '<br />'; // work!, var is 'a'
}
bar();
echo '"f_a" in FOO is: ' . $f_a . '<br />';
}
?>
有关此处的更多信息,请http://php.net/manual/en/language.variables.scope.php php中有全局变量的缺点所以请从这里阅读 Are global variables in PHP considered bad practice? If so, why?
答案 1 :(得分:0)
您可以将其作为参数传递:
function foo(){
$x = 0;
function bar($x){
//Do something with $x;
}
bar($x);
}
或者你可以创建一个闭包:
function foo(){
$x = 0;
$bar = function() use ($x) {
//Do something with x
};
$bar();
}