To calculate the average of values in a Laravel collection, you can use the avg
method. This method will return the average value of the given key of the items in the collection.
Here’s an example:
$collection = collect([
['name' => 'Alice', 'score' => 80],
['name' => 'Bob', 'score' => 90],
['name' => 'Charlie', 'score' => 70],
]);
$average = $collection->avg('score');
// $average is now 80
The avg
method will return a float value representing the average.
If you want to calculate the average of a specific key for a nested collection, you can use the avg
method in combination with the pluck
method:
$collection = collect([
['name' => 'Alice', 'scores' => [80, 90]],
['name' => 'Bob', 'scores' => [70, 80]],
['name' => 'Charlie', 'scores' => [90, 100]],
]);
$average = $collection->pluck('scores')->avg();
// $average is now 85
Note that the avg
method will return null
if the collection is empty or if all the values of the given key are null
.
If you want to calculate the average of all values in the collection, regardless of the keys, you can use the avg
method in combination with the flatten
method:
$collection = collect([[80, 90], [70, 80], [90, 100]]);
$average = $collection->flatten()->avg();
// $average is now 85