PHP在闭包外执行变量
我正在使用PHP和Laravel构建一个应用程序。我从maatwebsite导入了Excel模块,以便于从Excel文件中读取内容。我正在使用下面的代码阅读ExcelPHP在闭包外执行变量,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 } } 现在我想知道
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中也可以工作,因为它不是异步的(还没有?)。