why map
it’s not returning or pushing a values into array i tried to use use function
to call my array Emails
but its not working here is my logic code
$emails = []; //emails array
$students = User::where('role','student')->get(); //10 students email
$maps = collect($students)->pluck('email'); //collect 10 students email
$maps->map(function($map) use($emails){
return array_push($emails, $map); //push 10 students email to emails array
});
return $emails; //test emails array
it is returning empty email array i don’t know why its not working
>Solution :
The code you provided is not working because of the way you are trying to modify the $emails array. The map() function in PHP returns a new collection containing the results of applying the callback function to each item. It does not modify the original collection in place.
To fix this issue, you can try this:
$students = User::where('role','student')->get(); //10 students email
$emails = collect($students)->pluck('email')->toArray();
return $emails;
You don’t need to use a map function here. Using pluck method and converting it to an array should be enough to get an array of emails.
You can also use $students->map->email->toArray() for the same result.
Another thing, keep in mind that if you want to use a variable from the outer scope in a closure (callback function) it needs to be passed as use argument, otherwise the variable will not be accessible.
In your case, you don’t need to use use($emails) as you are creating a new array and returning it.