PHP回调动态变量范围访问
在PHP中,您可以动态创建变量PHP回调动态变量范围访问,php,callback,scope,closures,Php,Callback,Scope,Closures,在PHP中,您可以动态创建变量 $myarr = array('name'=>'Adam', 'age'=>22, 'sex'=>'male'); foreach ($myarr as $k=>$v) $$k = $v; 是否有方法将回调函数X和arrayX传递给另一个函数Y,从函数Y中的arrayX动态创建变量,并能够在函数X回调中引用这些变量 例如,我想: function eachRecord($arr, $callback){ foreach (
$myarr = array('name'=>'Adam', 'age'=>22, 'sex'=>'male');
foreach ($myarr as $k=>$v)
$$k = $v;
是否有方法将回调函数X和arrayX传递给另一个函数Y,从函数Y中的arrayX动态创建变量,并能够在函数X回调中引用这些变量
例如,我想:
function eachRecord($arr, $callback){
foreach ($arr as $k=>$v) $$k = $v;
$callback();
}
$myarr = array('name'=>'Adam', 'age'=>22, 'sex'=>'male');
eachRecord($myarr, function(){
echo "{$name} is a {$sex} of age {$age}.";
});
我不想将变量传递回回调函数,因为我可能不知道数组中的长度或键,我不想用未知的变量名污染全局范围,因为它们是动态创建的
有没有办法做到这一点?闭包
谢谢不,不可能。但像这样工作并不难:
function callback($values) {
extract($values);
echo "{$name} is a {$sex} of age {$age}.";
}
callback($myArr);
无论如何,你基本上只是在重新创造。天哪。。。我在空闲时间用PHP工作了多年,仍然不断地寻找我从未接触过的函数……我用了4年的PHP,几周前刚刚发现了提取函数,所以你并不孤单:)如果有块作用域,我也会很高兴,这样我就可以内联地完成这项工作,而不必将其封装在函数中。否则,这些变量在for/foreach循环之外可用。