2015-12-03 203 views
0

我试图获取Laravel中上载的Excel文件中存在的工作表总数。我上传的文件有3张。所以我期待得到$counter = 3的输出。获取Laravel中的工作表总数

代码:

$counter=0; 
Excel::load($fileDetails['file_path'], function($sheet) use($counter) { 
    $sheet->each(function($sheet) use($counter) { 
     echo "It works</br>"; 
     $counter++; 
    }); 
}); 
echo $counter; exit; 

输出:

It works 
It works 
It works 
0 //-- This is $counter, which is not get incremented. It has to be 3. 

回答

1

use作品像传递参数。缺省值是按值传递,因此在函数内部进行的任何修改都不会反映在函数范围之外。

但是,如果通过引用传递变量,则会反映更改。

更新您的代码:

$counter=0; 
// add & to have var passed by reference 
Excel::load($fileDetails['file_path'], function($sheet) use(&$counter) { 
    // add & to have var passed by reference 
    $sheet->each(function($sheet) use(&$counter) { 
     echo "It works</br>"; 
     $counter++; 
    }); 
}); 
echo $counter; 
exit; 
+0

感谢BROO,它的工作原理.. !!! – CodeBlood

+0

@CodeBlood没问题。我看到你是新来的,所以如果你觉得你的问题已经解决了,那么只需要提醒你将问题标记为已回答。这将帮助当前正在寻找问题的人们以及未来的搜索者。 – patricus

+0

对不起,标记为正确答案,谢谢提醒.. !!祝你有美好的一天.. – CodeBlood