Возможно ли выполнить анонимную функцию (также определенную внутри массива) изнутри массива?
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 }) ];