在每个循环Laravel中进行求和

Flo*_*ică 2 php laravel

我试图获得每个循环内的属性的总和.这是我的代码:

    $client_systems_count = 0;
    $client->accounts->each(function ($account) use ($client_systems_count) {
        dd($account->systems->count());
        $client_systems_count += $account->systems->count();
    });
    dump($client_systems_count);
Run Code Online (Sandbox Code Playgroud)

知道为什么它不起作用吗?我假设即使我在循环内部更改$ client_systems_count变量,每次它转到集合中的下一个元素时,它都会重置为它的初始值.那么哪个是获得总系统数的正确方法?

jer*_*oen 7

这是你的问题:

$client->accounts->each(function ($account) use ($client_systems_count) {
Run Code Online (Sandbox Code Playgroud)

每次函数运行时,它都使用$client_systems_count外部作用域.这是0.

要修改该值,您需要通过引用传递它:

$client->accounts->each(function ($account) use (&$client_systems_count) {
                                                 ^ here
Run Code Online (Sandbox Code Playgroud)