PHP闭包

最近我了解到,PHP可以将函数赋给变量。
可以像这样使用。

$func = function() {
    echo 'hello';
}; // 変数の右辺なので、「;」が必要っぽい

$func(); // hello

哦,我想到了一个可能的想法,就是是否可以在中文中实现类似JavaScript中的闭包…

$func = function() {
    $x = 0;
    return function() use($x) {
        return ++$x;
    };
};

$func2 = $func();
echo $func2(); // 1
echo $func2(); // 2かと思いきや、1
echo $func2(); // 3かと思いきや、1
echo $func2(); // 4かと思いきや、1

哎呀?(´・ω・`)
我稍微查了一下,在手冊的无名函数部分,

引用的变量值是在函数定义时的值,而不是在函数调用时的值。

看起来不能做哦。

补充说明:

根据@mpyw先生的评论,成功运行了!非常感谢!以下是代码的运行结果。

$func = function() {
    $x = 0;
    return function() use(&$x) {
        return ++$x;
    };
};

$func2 = $func();
echo $func2(); // 1
echo $func2(); // 2
echo $func2(); // 3

哦,原来是应该传递指针的啊…
如评论区所提到的@mpyw的代码更简洁,我认为你也可以参考那个。

广告
将在 10 秒后关闭
bannerAds