PHP在闭包外执行变量

PHP在闭包外执行变量,php,function,laravel,Php,Function,Laravel,我正在使用PHP和Laravel构建一个应用程序。我从maatwebsite导入了Excel模块,以便于从Excel文件中读取内容。我正在使用下面的代码阅读Excel Excel::load(Input::file('excel'), function ($reader) use ($request) { $sheets = $reader->get(); foreach($sheets as $sheet) { //do logic } } 现在我想知道

我正在使用PHP和Laravel构建一个应用程序。我从maatwebsite导入了Excel模块,以便于从Excel文件中读取内容。我正在使用下面的代码阅读Excel

Excel::load(Input::file('excel'), function ($reader) use ($request) {
   $sheets = $reader->get();
   foreach($sheets as $sheet) {
       //do logic
   }
}
现在我想知道是否可以从上面的函数中执行变量。我尝试了以下方法,但没有任何运气

   $results = Excel::load(Input::file('excel'), function ($reader) use ($request) {
      $sheets = $reader->get();
      foreach($sheets as $sheet) {
          $error = 1
      }
      return $error;
   }

调试$results时,它包含Excel maatwebsite类中的一个对象。有没有办法执行$error变量?

要回答我自己的问题,我用以下方法解决了它:

$value = "";

Excel::load(Input::file('excel'), function ($reader) use ($request, &$value) {
   $sheets = $reader->get();
   foreach($sheets as $sheet) {
       $value = $error;
   }
}

echo $value;

为了回答我自己的问题,我修正了它:

$value = "";

Excel::load(Input::file('excel'), function ($reader) use ($request, &$value) {
   $sheets = $reader->get();
   foreach($sheets as $sheet) {
       $value = $error;
   }
}

echo $value;

另一种方法是使用
global
关键字在闭包内声明$value,如下所示:
global$value
另一种方法是使用
global
关键字在闭包内声明$value,如下所示:
global$value
我不知道Excel,但您似乎可以向
$reader
对象添加结果,从中读取,因为
load()
返回reader对象。在作用域外使用作用域变量通常不是一个好主意,即使这在PHP中也能工作,因为它不是异步的(还?)。我不知道Excel,但似乎可以将结果添加到
$reader
对象,并从中读取,因为
load()
返回reader对象。在作用域外使用作用域变量通常不是一个好主意,即使这在PHP中也可以工作,因为它不是异步的(还没有?)。