Php 在匿名函数中调用匿名函数(初始)

Php 在匿名函数中调用匿名函数(初始),php,anonymous-function,Php,Anonymous Function,简单的问题,但很难回答?我在类方法中有以下匿名函数: $unnest_array = function($nested, $key) { $unnested = array(); foreach ($nested as $value) { $unnested[] = (object) $value[$key]; } return $unnested; }; 在同一个类方法中,我有一个数组,我保存匿名函数。也就是说,我使用内联create_fu

简单的问题,但很难回答?我在类方法中有以下匿名函数:

$unnest_array = function($nested, $key) {
    $unnested = array();

    foreach ($nested as $value) {
        $unnested[] = (object) $value[$key];
    }

    return $unnested;
};
在同一个类方法中,我有一个数组,我保存匿名函数。也就是说,我使用内联
create_function()
创建了一个新的匿名函数,我希望使用已经定义的匿名函数
$unnest_array()
。可能吗

$this->_funcs = array(
    'directors' => array(
        'func'  => create_function('$directors', 'return $unnest_array($directors, "director");'),
        'args'  => array('directors')
    )
);

目前我得到的是“未定义变量:unnest_数组”。帮助?

首先为什么要使用
create\u函数
?闭包完全取代了
create_函数
,使得它在5.3之后的所有PHP版本中基本上都过时了。似乎您正试图通过将第二个参数修改为
“director”
$unnest\u array

除非我误解了您的意思,否则您应该能够通过使用闭包/匿名函数(未经测试)获得相同的结果:


use($unnest\u array)
子句是访问闭包父范围中的局部变量所必需的。

您可能希望将其称为闭包。。。并删除所有内容。调用匿名函数和闭包。为什么要删除所有内容?加上1,即使只是开头部分:DLittle correction:
使用($unnest\u array)
而不是
使用$unnest\u array
@hakra:谢谢,我的错。我已经有一段时间没有使用PHP了!你读得很好,谢谢!我不知道
use
关键字。
$this->_funcs = array(
    'directors' => array(
        'func'  => function($directors) use ($unnest_array)
            {
                return $unnest_array($directors, "director");
            },
        'args'  => array('directors')
    )
);