Laravel Excel: CSV to Array

Je travaille donc sur un formulaire où je souhaite o donner à l'user la possibilité de download un CSV qui permettra au formulaire d'être automatiquement rempli. Je pensais donc que je construirais une fonction qui lit le CSV puis je lance chaque ligne dans un tableau en tant qu'object que je puis transmettre à mon model Laravel Blade. Mon seul problème est que le tableau que je retrouve de la fonction est toujours vide. Des idées?

private function import($path) { $applicants = []; Excel::load($path, function(LaravelExcelReader $excel) use ($applicants){ $excel->each(function(Collection $line) use ($applicants){ $name = new \stdClass; $name->first = $line->get('first'); $name->middle = $line->get('middle'); $name->last = $line->get('last'); $name->birthdate = $line->get('birthdate'); $name->ssn = $line->get('ssn'); $name->email = $line->get('email'); $name->mobile_phone = $line->get('mobile_phone'); $name->home_phone = $line->get('home_phone'); $name->street = $line->get('street'); $name->city = $line->get('city'); $name->state = $line->get('state'); $name->zip = $line->get('zip'); array_push($applicants, $name); }); }); return $applicants; } 

Essayez-le en utilisant & operator dans l'instruction use comme suit:

 Excel::load($path, function(LaravelExcelReader $excel) use (&$applicants){ ... } 

OU

Faire des $applicants une propriété de class puis l'utiliser dans votre fonction comme suit:

 private function import($path) { $this->applicants = []; Excel::load($path, function(LaravelExcelReader $excel) { $excel->each(function(Collection $line) { ... array_push($this->applicants, $name); }); }); return $this->applicants; } 

Installer – https://github.com/Maatwebsite/Laravel-Excel

Ensuite, essayez le code ci-dessous:

 $reader = \Excel::load($file_path); //this will load file $results = $reader->noHeading()->get()->toArray(); //this will convert file to array foreach($results as $v){ \\process your array } 

au lieu de

 array_push($applicants, $name); 

essaye ça

 $applicants[] = $name; 

laissez-moi savoir si cela fonctionne