Метод sum
Метод sum применяется к коллекции Laravel
и возвращает сумму значений по указанному ключу.
В качестве параметра метод принимает имя ключа
или замыкание (callback), которое определяет,
какое значение нужно суммировать. Если коллекция
содержит простые числа, можно вызвать метод без
параметров.
Синтаксис
<?php
collect($items)->sum($key);
?>
Пример 1
Давайте вычислим сумму чисел в коллекции:
<?php
use Illuminate\Support\Collection;
$collection = collect([1, 2, 3, 4, 5]);
$res = $collection->sum();
echo $res;
?>
Результат выполнения кода:
"15"
Пример 2
Давайте вычислим сумму значений поля 'age'
в коллекции объектов:
<?php
use Illuminate\Support\Collection;
$users = collect([
(object) ['name' => 'user1', 'age' => 25],
(object) ['name' => 'user2', 'age' => 30],
(object) ['name' => 'user3', 'age' => 35],
]);
$res = $users->sum('age');
echo $res;
?>
Результат выполнения кода:
"90"
Пример 3
Давайте вычислим сумму значений поля 'price'
в коллекции ассоциативных массивов:
<?php
use Illuminate\Support\Collection;
$products = collect([
['name' => 'product1', 'price' => 100],
['name' => 'product2', 'price' => 200],
['name' => 'product3', 'price' => 300],
]);
$res = $products->sum('price');
echo $res;
?>
Результат выполнения кода:
"600"
Пример 4
Давайте используем замыкание для вычисления суммы с преобразованием значений:
<?php
use Illuminate\Support\Collection;
$orders = collect([
['quantity' => 2, 'price' => 100],
['quantity' => 3, 'price' => 150],
['quantity' => 1, 'price' => 200],
]);
$res = $orders->sum(function ($order) {
return $order['quantity'] * $order['price'];
});
echo $res;
?>
Результат выполнения кода:
"850"
Пример 5
Давайте вычислим сумму значений с использованием вложенного ключа:
<?php
use Illuminate\Support\Collection;
$data = collect([
['user' => ['id' => 1, 'score' => 10]],
['user' => ['id' => 2, 'score' => 20]],
['user' => ['id' => 3, 'score' => 30]],
]);
$res = $data->sum('user.score');
echo $res;
?>
Результат выполнения кода:
"60"