在数组中执行函数


Execute a function inside array

是否可以从数组内部执行匿名函数(也在数组内部定义)?

return [
    //execute?
    function() {
        //logic
    }
];

还是我应该在外面定义它,然后才称之为它?

从技术上讲,您可以将函数括在括号中,并像这样调用它:

return [
    (function() { return 42; })()
];

与相同

return [
    42
];

然而,你为什么要这样做?这只会降低代码的可读性。最好只是有一个单独的变量来保存闭包,并根据需要调用它。

您也可以使用call_user_func函数来实现这一点:

function test(){
    return [
        call_user_func(function(){
            return "I was executed inside array! wow!";
          })  
    ];
}
print_r(test());
// the output:
Array
(
    [0] => I was executed inside array! wow!
)

试试这个:

return [
    call_user_func(function(){
        // logic executed
    })
];