Получить общее количество листов в Laravel

Я пытаюсь получить общее количество листов в загруженном файле Excel в Laravel. Файл, который я загружаю, имеет 3 листа. Так что я ожидаю получить вывод $counter = 3,

Код:

$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.

0

Решение

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;
1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector