Christoph: Nach unset() file wieder Speichern

Hi zusammen,

Hab nen kleines Problem mit dem Loeschen von Strings aus Arrays.
Folgendes, mein Script dient dem Zweck einen bestimmten String aus dem Array zu Loeschen das es auch wunderbar tut, aber beim Speichern der Datei ("Angenommen ich Loesche String[0]") fehlt jeweils der darauf folgende String.

Ich hoffe ihr könnt mir sagen was ich falsch mache?

Auszug vom Script:

if($del)
{
$inhalt = file('user.dat');
echo "$inhalt[$k] wurde Gelöscht!<br>";
unset($inhalt[$k]);
trim(file('user.dat'));
$fp = fopen('user.dat','w');
rewind($fp);

for($i=0;$i<count($inhalt);$i++)
{
fputs($fp,$inhalt[$i]);
}
fclose($fp);

}

Danke für eure Muehen

MfG Chris

  1. Holla

    Ich hoffe ihr könnt mir sagen was ich falsch mache?

    Du löscht ein Element aus der Mitte des Arrays.
    Das heißt, nach denm Löschen bleibt eine "Lücke" im Array.

    Später zählst Du das Array in einer Schleife durch - inkl. dem fehlenden Eintrag, der dann als "" verarbeitet wird. Da count() aber die korrekte Anzahl der Einträge zurückgibt, hört die Schleife auf, bevor sie den letzten Eintrag verarbeitet hat.

    Ciao,

    Harry

    1. Hi,

      Holla

      Du löscht ein Element aus der Mitte des Arrays.
      Das heißt, nach denm Löschen bleibt eine "Lücke" im Array.

      Trift genau auf meine Vermutung,*g* nu bleibt nur noch das Problem wie ich die Lücke Loesche ? Ich würde dabei spontan an trim() denken, wenn du allerdings sagst das das die Lücke in der Form " " existiert sollte ich wohl eine Art strip_tags() verwenden, oder würde es reichen wenn ich durch addslashes() ein Backslash for die "" stelle?

      Wie würdest du das machen?

      Ciao,

      MfG

      Harry

      Chris

      1. mit sort oder asort, arsort müßte das leer ans ende rücken bzw. anfang