Php - name = function()回调变量

时间:2015-08-11 11:44:18

标签: php function callback

我在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

3 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

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

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;

答案 2 :(得分:0)

见这里 - http://php.net/manual/en/functions.anonymous.php#example-195。 必须是这样的:

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