gpt4 book ai didi

php - 在闭包中初始化父作用域变量

转载 作者:行者123 更新时间:2023-12-02 20:21:50 25 4
gpt4 key购买 nike

为了从闭包中初始化父作用域中的变量,我可以这样做:

$f = function () use (&$a) {
$a = 1;
};
$f();
$a === 1; // true

我的问题是,这是副作用还是我将来可以依赖的预期行为?我知道我可以在定义闭包之前简单地添加 $a = null ,但是如果有很多变量,这可能会变得很难看。

最佳答案

这是由于引用手册 PHP : What References Do 中的预期行为:

Note:

If you assign, pass, or return an undefined variable by reference, it will get created.

即使在调用函数之前,也会创建变量并将其设置为 NULL,因为 use 在函数创建时导入变量。在函数定义之前,您会收到一个Notice: Undefined variable: a:

var_dump($a);

$f = function () use (&$a) {
//$a = 1;
};

var_dump($a);

$f();

var_dump($a);

产量:

Notice: Undefined variable: a
NULL
NULL
NULL

关于php - 在闭包中初始化父作用域变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51197295/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com