Czasami trzeba zignorować ostatnią linię lub linie csv. Ustawiam liczbę ignorowanych linii od góry jako $start_offset i liczbę linii do zignorowania od dołu jako $end_offset. Zacznij od zera i zwiększaj, aż błąd przesunięcia zniknie
Oto jak to robię:
$data = file_get_contents($filename);//load up csv
$data_array = explode("\n", $data);//break file into lines
$csv = array_map('str_getcsv', $data_array);//break up comma delimited
$csv_len = count($csv); //count of number of lines
$start_offset = 2;
$end_offset = 3;
for ($i=$start_offset; $i<$csv_len-$end_offset; $i++)
{
//access columns as $csv[$i][0], $csv[$i][1] etc
}