Nekem is úgy tűnik van pár vérző sebe, de attól még működhet.
Mondjuk, az nem világos miért kell visszaállítani, a foreach a tömb másolatán dolgozik, nem változik a tömb mutatója:
http://php.net/manual/en/control-structures.foreach.php
In PHP 5, when foreach first starts executing, the internal array pointer is automatically reset to the first element of the array. This means that you do not need to call reset() before a foreach loop.
As foreach relies on the internal array pointer in PHP 5, changing it within the loop may lead to unexpected behavior.
In PHP 7, foreach does not use the internal array pointer.
Ez egyébként valami pontosvesszős-csv feldolgozás akar lenni? Mert akkor pythonban csv.reader alkalmasabbnak tűnik a feladatra, mint ezt portolni.
(a php kódban az fgetcsv/ str_getcsv amúgy szintén alkalmas lett volna, nem kell vacakolni az idézőjel escape-eléssel, többsoros mezőkkel, kommentekkel stb., tudják.)