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     = "";
         }
    }
}
  • Вопрос задан
  • 164 просмотра
Решения вопроса 1
Читаем CSV-файл встроенной функцией:
if ($fh = fopen('/public/vag102020.csv', 'r')) {
    while (($csvStr = fgetcsv($fh, 1024, ';')) !== false) {
        $csvArr[] = $csvStr;
    }
}


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

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

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽