【问题标题】:Php - name = function() callback varphp - name = function() 回调变量
【发布时间】:2015-08-11 11:44:17
【问题描述】:

我在 foreach 循环中使用了一个函数。我在这个循环中更新了一些 var,我想将它传递给一个函数。 但是,我不明白是否可以传递回调参数。 好像不行。

foreach($infos as $info) {
    $i = $info;
    $a = 'aaa';
    $b = 'bbb';
    $datas[$i] = function($a,$b) {
        $data['a'] = $a;
        $data['b'] = $b;
        return $data;
    };
}
return $datas;

如何传递 var $a$b

【问题讨论】:

  • $datas[$i] = function($a,$b,) 语法错误。删除最后一个逗号。
  • 不太清楚你想在那里完成什么。为什么不立即分配数组?结果列表$datas 是否真的包含绑定函数,或者更好的是a/b 列表?如果您制作了一个闭包列表,那么您必须在之后传递 $a/$b 变量,以调用每个函数,然后将其分配回来(?)
  • 事实上 $datas 在一个带有调用方法的添加过滤器中。我只能这样写。

标签: php function callback


【解决方案1】:

不清楚为什么要这样写。改为使用直接分配

$datas = array();
foreach($infos as $info) {
    $a = 'aaa';
    $b = 'bbb';
    $datas[$info] = array('a' => $a, 'b' => $b);
}

【讨论】:

  • 感谢您的帮助,但我不能这样分配,我必须使用回调过滤器为_call()方法function()分配一个函数。
【解决方案2】:

不确定您不想在这里完成什么,但匿名函数可以使用“use”从父作用域继承变量。所以试试:

foreach($infos as $info) {
    $i = $info;
    $a = 'aaa';
    $b = 'bbb';
    $datas[$i] = function() use ($a, $b) {
        $data['a'] = $a;
        $data['b'] = $b;
        return $data;
    };
}
return $datas;

【讨论】:

    【解决方案3】:

    请看这里 - http://php.net/manual/en/functions.anonymous.php#example-195。 一定是这样的:

    $datas[$i] = function() use($a,$b) {
       $data['a'] = $a;
       $data['b'] = $b;
       return $data;
    };
    

    【讨论】:

      猜你喜欢
      • 2012-09-30
      • 2012-12-20
      • 2018-05-02
      • 2012-08-30
      • 1970-01-01
      • 2012-12-27
      • 1970-01-01
      • 1970-01-01
      • 2011-02-25
      相关资源
      最近更新 更多