数组项是一个闭包对象,我可以将其返回值作为同一数组项吗


Array item is a closure object, can I get its return value as the same array item?

我有这个数组:

$people = array( 
   'kids' => 100, 
   'adults' => function() {
       return 1000
   }
);

如果我做print_r($people),我得到:

Array ([kids] => 100, [adults] => Closure Object() )

如何在相同的数组位置获得闭包对象的返回值,而不是闭包对象本身?

这在PHP中可能吗?

$myFunction = function() { return 1000; };
$people = array( 'kids' => 100, 'adults' => $myFunction());

如果你试着这样内联:

$people = array( 'kids' => 100, 'adults' => function() { return 1000; }());

您将得到一个解析错误:

PHP分析错误:语法错误,意外的"(",应为")"

如果你必须在一条线上完成,你可以使用call_user_func:

$people = array( 
    'kids' => 100, 
    'adults' => call_user_func(function(){ return 1000; })
);