Das sieht schon sehr gut aus. 
Vielleicht noch eine Überlegung: Brauchst du die ID?
a) Ja, du möchtest den "gezielt" den Eintrag mit der ID 5 löschen. Das bedeutet, du musst alle Zeilen mittels Schleife durchlaufen und jeweils prüfen ob die ID == 5 ist
b) Nein, du möchtest "blind" den 3. Eintrag löschen. Das bedeutet, dass du einfach ein unset($array[2]) ausführen kannst. Wenn zwei User gleichzeitig daran Arbeiten, kann das zu Problemen führen. (warum sollte klar sein)

Vielleicht noch eine Überlegung: Brauchst du die ID?
a) Ja, du möchtest den "gezielt" den Eintrag mit der ID 5 löschen. Das bedeutet, du musst alle Zeilen mittels Schleife durchlaufen und jeweils prüfen ob die ID == 5 ist
b) Nein, du möchtest "blind" den 3. Eintrag löschen. Das bedeutet, dass du einfach ein unset($array[2]) ausführen kannst. Wenn zwei User gleichzeitig daran Arbeiten, kann das zu Problemen führen. (warum sollte klar sein)
EDIT:
Ach so, wenn du eine Entscheidung für a) oder b) getroffen hast, steht auch schon das weitere vorgehen fest...
Moderator


zu file_put_contents(), da steht sicher nichts von einem Array. Das müsste dir ein korrekt eingestelltes Error-reporting auch mitgeteilt haben?!
Ich will mich nicht ärgern, ich möchte gern eine Lösung haben. Hier wird man nur schlecht gemacht, weil man evtl. falsch formuliert hat. Ich hab schon verstanden was da passiert... bis auf diese Sache zum Schluss mit:
Verdammt.. ich habe die Variable nicht geändert bei diesem Posting hier
Kommentar