@OstapO

Что не так с областью видимости переменной?

public function importFileIntoDB(Request $request){
    $data = array();
    if($request->hasFile('excel_file')){
      $path = $request->file('excel_file')->getRealPath();
      Excel::load($path, function($reader) {
        $results = $reader->get();
        foreach ($results as $item) {
          if(!empty($item->firstname) && !empty($item->lastname) && !empty($item->sex) && !empty($item->year) && !empty($item->user_group) && !empty($item->email) && !empty($item->school) && !empty($item->birthday) && !empty($item->mentor)){
            array_push($data, $item);
          };
        };
      });
      print_r($data);
      exit();
}
}


если объявить переменную $data внутри функции Excel::load, то все ок
но мне нужно переменная в глобальной области видимости

Error:
ErrorException: array_push() expects parameter 1 to be array, null given
  • Вопрос задан
  • 120 просмотров
Решения вопроса 1
mosesfender
@mosesfender
Меланхолик, параноик, падал с коек
Еще лучше function($reader) use (&$data) {…}
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Надо использовать use
function($reader) use ($data) {
подробнее в доках https://secure.php.net/manual/ru/functions.anonymo...
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы