php - 无法理解函数和引用行为

标签 php

我有这个代码。

$add = (function () {
    $counter = 0;
    return function () use(&$counter) {return $counter += 1;};
})();

echo $add(); //1
echo $add(); //2
echo $add(); //3

预期输出:

111

原始输出:

123

函数内部$counter=0被赋值为0,所以&$counter应该为0。
所以当我第二次调用它时,它会看到 $counter=0 并且 &$counter 将为 0,不是吗?
为什么会增加?

最佳答案

它不会第二次调用 $counter=0。在启动第一个函数时只调用一次。当您调用 $add() 时,您每次调用第二个函数(即在您的 return 语句中),它只使用您通过引用传递的 $counter 的修改值。如果你在 $counter = 0; 之后添加 echo $counter; 你会看到。

关于php - 无法理解函数和引用行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64372502/

相关文章:

php - 如何在另一个php文件中使用fetch数组

php - PHP/MYSQL 中的 ORDER BY 不起作用

php - Capistrano 错误 - 无效选项 : known_hosts

php - 按名称获取组件的站点路径 - Joomla 2.5

php - CodeIgniter 中的 jQuery,在 View 内还是在外部 js 文件中?

php - 此页面包含以下错误 : error on line 1 at column 1: Document is empty

php - 加载 CodeIgniter 库的替代方法,以便它们与自动完成配合良好

php - 使用 Azure Web 应用程序连接到 Azure 数据库

php - PHP中的SSH连接和命令

php - 为什么这段 PHP 代码在一台机器上运行而在另一台机器上失败?