Переменная Область Закрытия PHP | Laravel - PullRequest
0 голосов
/ 30 апреля 2020

Может кто-нибудь помочь мне понять область действия переменной для этого сценария? У меня есть переменная $i, и я закрываю эту переменную и увеличиваю ее. Но когда я печатаю переменную $i вне замыкания, она печатает 0 (начальное значение). Как я могу убедиться, что эффекты в переменной $i доступны извне?

class ImportsController{

    public function sync()
    {
        $i = 0;

        LazyCollection::make(function () use (&$csv_data) {
            $datas = $csv_data;
            foreach ($datas as $line) {
                if (count($line) == $key_count && !containsOnlyNull($line)) {
                    yield $line;
                }
            }
        })
        ->chunk(50)
        ->each(function ($lines) use (&$i) {
            foreach ($lines as $chunk) {
                if ($lines) {
                    $i++;
                }
           }
        });

        echo $i;
    }
}

1 Ответ

0 голосов
/ 01 мая 2020

Вы можете использовать личную переменную в вашем классе для этой цели:

class ImportsController{

private $i;

    public function sync()
    {
        $this->i = 0;

        LazyCollection:: 
        ...
        ->each(function ($lines) {
            foreach ($lines as $chunk) {
                if ($lines) 
                    $this->i++;
           }
        });

        echo $this->i;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...