是否可以在 PHP 中访问外部局部变量?
是否可以在 PHP 子函数中访问外部局部变量?
在下面的代码中,我想访问内部功能栏中的变量。声明为在 bar 中不起作用。$l
$l
global $l
function foo()
{
$l = "xyz";
function bar()
{
echo $l;
}
bar();
}
foo();
是否可以在 PHP 子函数中访问外部局部变量?
在下面的代码中,我想访问内部功能栏中的变量。声明为在 bar 中不起作用。$l
$l
global $l
function foo()
{
$l = "xyz";
function bar()
{
echo $l;
}
bar();
}
foo();
你可以使用闭包,来做到这一点...
编辑 :花了一些时间来记住语法,但下面是它看起来的样子:
function foo()
{
$l = "xyz";
$bar = function () use ($l)
{
var_dump($l);
};
$bar();
}
foo();
而且,运行脚本,您将获得:
$ php temp.php
string(3) "xyz"
一些注意事项:
;
use
&
use (& $l)
有关详细信息,作为参考,可以在手册中查看此页面:匿名函数
您必须使用关键字。use
$bar = function() use(&$l) {
};
$bar();
在非常古老的 PHP 5.2 及更早版本中,这不起作用。你得到的语法不是闭包,而是全局函数的定义。
function foo() { function bar() { } }
工作原理与:
function foo() { include "file_with_function_bar.php"; }
如果你执行函数两次,PHP会抱怨你试图重新定义一个(全局)函数。foo
bar