Tom: Aus einem Array einen gesuchten Wert löschen !!

Beitrag lesen

Hello Marco,

das kann man ja nicht mit ansehen, wie Du leidest ;-)

Nochmal die zwei Tipps.

Voraussetzung: es werden nicht zuviele Adressen (so ca. 400-500 entsprechend ca. 100k mit Zusatzdaten sollten die Grenze bleiben)

Wenn nur die email-@ gespeichert werden sollen, kannst Du mit einer Adresse pro Zeile und mit file() arbeiten.

Da Du aber zur Bearbeitung sowieso die ganze Datei einlesen musst, kannst Du auch gleich mit

$email1 = "tom@bitworks.de";

$_mails = array();
$_mails[$email1] = array();
$_mails[$email1]['vorname'] = "Thomas";
$_mails[$email1]['alter'] = "uHu";

$_mails['marco@web.de']['vorname'] = "Marco";
$_mails['marco@web.de']['alter'] = "unbekannt";

usw. arbeiten.

Lass Dir das Array mal zur Kontrolle mit

echo "<pre>";
print_r($_mails);
echo "</pre>";

ausgeben.

Das Array serialisierst Du dann mit

$data = serialize($_mails);

und schreibst es weg mit

Dateihandle zum Schreiben besorgen möglich ?
Datei locken möglich ?
Datei schreiben mit fwrite($fh,$data);
Datei schließen
(Lock verschwindet dann automatisch)

Und wenn Du was ändern willst:

Dateihandle zum Lesen und Schreiben ("r+") besorgen möglich ?
Datei locken möglich ?
Datei auslesen bis zum Ende mit fread($fh,$data,filesize($dateiname));
array wiederherstellen mit $_mails = unserialize($data);

Neue Daten reinscheriben ins Array:

$_mails['tom@bitwiorks.de']['vorname'] = "Thomas Jürgen";
$_mails['tom@bitwiorks.de']['alter'] = "45";

Wenn der Eintrag vorhanden war, wird er überschreiben, wenn er neu ist, wird er angelegt.

Und wenn Du einen Empfänger löschen willst:

if (isset($_mails["loesch@mich.nie"])) unset($_mails["loesch@mich.nie"]);

und weg ist er.

array serialisieren mit $data = serialize($_mails);
und wegschreiben:

fseek($fh, 0); # weil der zeigen am Ende stand und nicht am Anfang
ftruncate($fh, 0); # Datei leer machen. Nur nötig, wenn das neue
                     Array kleiner ist, als das alte.

Daten zurückschreiben

fwrite($fh, $data);

Datei schließen
(Lock verschwindet dann automatisch)

Wenn Du Dein Programm fertig hast, Postest Du das hier nochmal (den Link auf ein *.txt) dann schau ichs nochmal an.

Liebe Grüße aus http://www.braunschweig.de

Tom

--
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen