Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

Laravel 9 – map collect can't scope outside variable array even using use

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

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

>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.

Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading