Выполнить функцию внутри массива

Возможно ли выполнить анонимную функцию (также определенную внутри массива) изнутри массива?

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

Или я должен определить его на улице и только потом называть его?

Технически вы можете заключить эту функцию в круглые скобки и вызвать ее следующим образом:

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

который является таким же, как

 return [ 42 ]; 

Однако зачем вам это делать? Это будет только для того, чтобы сделать код менее читаемым. Было бы намного проще просто иметь отдельную переменную, которая удерживает замыкание и вызывать это, как требуется.

Вы также можете добиться этого с call_user_func функции 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 }) ];