首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >指定匿名函数中的指定匿名函数

指定匿名函数中的指定匿名函数
EN

Stack Overflow用户
提问于 2014-09-11 03:49:10
回答 1查看 36关注 0票数 0

我做了一个尝试在匿名函数中调用匿名函数的实验,但是它不起作用,并且得到了一些错误:

代码语言:javascript
复制
E_NOTICE : type 8 -- Undefined variable: print -- at line 10
E_ERROR : type 1 -- Function name must be a string -- at line 10

有人能告诉我原因吗?

以下是代码:

代码语言:javascript
复制
<?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!';
   });

?>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-11 03:58:01

您需要提供使用关键字来使用闭包中的外部变量。您的代码应该是:

代码语言:javascript
复制
<?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上运行,没有错误。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25778769

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档