关闭PHP的可变范围|Laravel



有人能帮我理解这个场景的变量范围吗?我有一个变量$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;
}
}

您可以为此在类上使用一个私有变量:

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

最新更新