PHP:封闭设置变量

时间:2019-03-03 18:58:58

标签: php closures

在PHP中,闭包非常有用。但是我可以使用闭包来设置数组元素吗?

$configs = [
    "y" => "1",
    "x" => function() { return "xxx"; },
];
echo $configs["y"];
echo $configs["x"];  // error

给予

Recoverable fatal error: Object of class Closure could not
be converted to string on line 6 (last line)

是否有机会转换闭包或闭包用于数组初始化的任何东西?

在MacOSX上使用PHP 7.1.4

2 个答案:

答案 0 :(得分:1)

您需要一个 IIFE (立即调用函数表达式):

$configs = [
  'y' => '1',
  'x' => (function () { return 'xxx'; })()
];

echo $configs['x'];

演示:https://3v4l.org/O0fEm

答案 1 :(得分:0)

我将函数分开定义:

function test(){   
    echo "Hello";
}

然后将结果分配给变量:

$a = test();
echo $a; //Returns "Hello"