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

时间:2015-11-13 21:54:30

标签: php arrays closures

我有这个数组:

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

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

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

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

这可以在PHP中使用吗?

1 个答案:

答案 0 :(得分:0)

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

如果你尝试这样内联:

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

您将收到一个解析错误:

  

PHP Parse错误:语法错误,意外'(',期待')'

如果您必须在一行上执行此操作,则可以使用call_user_func

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