php 在回调函数中访问全局作用域变量[重复]

3pvhb19x  于 2024-01-05  发布在  PHP
关注(0)|答案(1)|浏览(207)

此问题在此处已有答案

Access a global variable in a PHP function(10个答案)
9天前关闭
请参阅下面的函数来扫描目录中的文件(从这里)

  1. function scandir_only_files($dir) {
  2. return array_filter(scandir($dir), function ($item) {
  3. return is_file($dir.DIRECTORY_SEPARATOR.$item);
  4. });
  5. }

字符串
这不起作用,因为$dir不在匿名函数的作用域中,并且显示为空,导致过滤器每次都返回NULL。

umuewwlo

umuewwlo1#

你必须使用use关键字显式声明从父作用域继承的变量:

  1. // use the `$dir` variable from the parent scope
  2. function ($item) use ($dir) {

个字符
anonymous functions 页面上查看这个例子。
闭包可以从父作用域继承变量。任何这样的变量都必须在函数头中声明。闭包的父作用域是声明闭包的函数(不一定是调用它的函数)。

相关问题