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
