Beide Probleme kannst Du über assoziative Arrays lösen. Mache aus jeder Zeile ein assiatives Array, also so daß die Spalten Namen bekommen. Dann kannst Du über array_merge() diese Felder namentlich überschreiben.
Und die ganze Datei ist auch ein ass. Array. Entweder mit der Zeilennummer als Schlüssel oder mit einem Datenfeld was die Eindeutigkeit regelt.
MFG