I'm trying to split users in two categories, younger or older than 20, by looping thru them in order to calculate age value with Carbon.
public function groupAndCountBasedOnAge($users) {
// i'm giving the array keys & values
$ageGroups = array('younger than 20' => 0,
'older than 20' => 0);
foreach($users as $u) {
$now = Carbon::now();
$u->age = Carbon::createFromFormat('Y-m-d', $u->birth_date);
$u->age = $now->diffInYears($u->age); // getting actual age value for each user
if($u->age < 20 ) {
$ageGroups[younger than 20'] += 1;
}
elseif($u->age > 20 ) {
$ageGroups['older than 20'] += 1;
}
return $ageGroups;
}
}
public function index() {
$users = DB::table('users')->get();
$users = $this->groupAndCountBasedOnAge($users);
return view('/users/list', [
'users' => $users
]);
} However dd($users) always returns the same array, no matter what I change:
array:2 [▼
"less than 20" => 1
"older than 20" => 0
]