taras1978
@taras1978
почти программист

Почему может возникать ошибка Undefined offset: 5?

Пробую считать csv файл, считать по строкам и сделать двумерный массив. Это получается,
Ошибка возникает в последнем цикле, когда переменным присваиваются значения ячеек вложенного массива.
Может из-за того, что ячейка может быть пустой, но вот недавно же работало ..
Смысла у кода нет я откусил все лишнее.
public function fileUploadPost(Request $request)
    {
        $contents = Storage::get("/public/vag102020.csv");
        $linesarr = explode("\r\n",$contents);
        $i=0;
        foreach ($linesarr as $linesar)
        {
            $csvarr[] =  explode(";",$linesar);
         }
        unset($contents);
        unset($linesarr);

        $i=0;

        foreach($csvarr as $line)
        {
            $i++;

            $NUMBER  =  $line[0];
            $NUMBER2 =  $line[3];
            $WEIGHT  =  $line[5];
            $NL      =  $line[2];
            $VPE     =  $line[1];
            $TEILEART=  $line[6];
            $TITLE   =  $line[7];
            $VIN     = "";
         }
    }
}
  • Вопрос задан
  • 53 просмотра
Решения вопроса 1
Читаем CSV-файл встроенной функцией:
if ($fh = fopen('/public/vag102020.csv', 'r')) {
    while (($csvStr = fgetcsv($fh, 1024, ';')) !== false) {
        $csvArr[] = $csvStr;
    }
}


А по поводу ошибки — да, скорее всего поле пусто. Решается просто:
$weight = $line[5] ?? 0;
Остальные поля желательно обрабатывать так же.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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