在数组内执行一个函数

时间:2016-05-12 19:06:45

标签: php arrays function

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

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

或者我应该在外面定义它,然后再调用它?

3 个答案:

答案 0 :(得分:3)

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

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

相同
return [
    42
];

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

答案 1 :(得分:1)

您也可以使用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!
)

答案 2 :(得分:1)

试试这个:

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