2015-12-03 45 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