PHP如何直接使用匿名函数赋值?含数组内使用场景疑问
问题解答
1. 匿名函数直接执行的正确写法
你想跳过变量直接执行匿名函数的思路没问题,但语法有误。PHP里不能直接写 $val = () { return 42; };,必须保留function关键字,并且把整个匿名函数用括号包裹后再调用,正确写法如下:
$val = (function () { return 42; })(); echo $val; // 输出42
2. 数组中使用带use的匿名函数完全可行
这个思路是合理的,只要修正数组里的语法错误(把=改成=>),就能正常使用。完整示例代码如下:
$value = ['foo' => 'BAR']; $foobar = [ 'something' => function () use ($value) { $a = $value['foo'] ?: ''; $d = ['FOO' => 'F', 'BAR' => 'B', '' => '']; return $d[$a]; } ]; // 后续需要时调用该匿名函数 $result = $foobar['something'](); echo $result; // 输出B
这种写法适合需要延迟执行逻辑的场景——比如不需要在定义数组时就计算结果,而是在后续某个时机才调用逻辑取值。如果逻辑不需要延迟执行,提前计算好值再赋值给数组项会更直接;如果逻辑需要多处复用,写成常规函数更合适,但如果是仅和该数组绑定的一次性动态逻辑,用数组内的匿名函数完全没问题。
内容的提问来源于stack exchange,提问作者klutt
相关产品推荐
相关产品推荐

