在PHP中,您可以动态创建变量
$myarr = array('name'=>'Adam', 'age'=>22, 'sex'=>'male');
foreach ($myarr as $k=>$v)
$$k = $v;
有没有办法将回调函数X和arrayX传递给另一个函数Y,在functionY中从arrayX动态创建变量,并且能够在functionX回调中引用这些变量?
例如,我想:
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}.";
});
我不想将变量传回回调函数,因为我可能不知道数组中的长度或键,并且我不想用未知的变量名来污染全局范围,因为它们是动态创建。
有没有办法做到这一点?封?
感谢
答案 0 :(得分:0)
不,这是不可能的。不过这样解决并不难:
function callback($values) {
extract($values);
echo "{$name} is a {$sex} of age {$age}.";
}
callback($myArr);
无论如何,你基本上只是在重新发明http://php.net/extract。