我做了一个尝试在匿名函数中调用匿名函数的实验,但是它不起作用,并且得到了一些错误:
E_NOTICE : type 8 -- Undefined variable: print -- at line 10
E_ERROR : type 1 -- Function name must be a string -- at line 10有人能告诉我原因吗?
以下是代码:
<?php
$print = function($key, $val){
return 'The key: ' . $key . ', and value: ' . $val . '<br />';
};
$output = function($datas, $done_action){
foreach($datas as $key => $val){
echo $print($key, $val);
}
$done_action();
};
$elem1 = array('Name' => 'Aldi', 'Phone' => '087770958005', 'Address' => 'Bogor');
$output($elem1, function(){
echo '<br />Foreach function was ended!';
});
?>发布于 2014-09-11 03:58:01
您需要提供使用关键字来使用闭包中的外部变量。您的代码应该是:
<?php
$print = function($key, $val){
return 'The key: ' . $key . ', and value: ' . $val . '<br />';
};
$output = function($datas, $done_action) use ($print) {
foreach($datas as $key => $val){
echo $print($key, $val);
}
$done_action();
};
$elem1 = array('Name' => 'Aldi', 'Phone' => '087770958005', 'Address' => 'Bogor');
$output($elem1, function(){
echo '<br />Foreach function was ended!';
});在我的php-5.3.10上运行,没有错误。
https://stackoverflow.com/questions/25778769
复制相似问题