Hello,
$clid = $_GET['clid'];
$open_file = @fopen($file,'a')
or die("Konnte Datei <b>$open_file</b> nicht öffnen");
flock($open_file,2);
$file_array = file($file);
foreach($file_array as $key => $value) { #array mit der betreffenden clid heraussuchen
if(strpos($value, $clid) !== false) {
$comment_edit = $file_array[$key]; #dieses in variable speichern
unset($file_array[$key]); #sofort löschen
^siehe Anmerkung
}
}
> >
> Anmerkung:
> <http://de.php.net/manual/de/control-structures.foreach.php>
> ...
> Anmerkung: Beachten Sie auch, dass foreach mit einer Kopie des angegebenen Arrays arbeitet, nicht mit dem Array selbst. Deshalb wird auch der Arrayzeiger nicht wie bei dem each()-Konstrukt verändert und Veränderungen an ausgegebenen Arrayelementen haben keine Auswirkung auf das originale Array. Trotzdem wird der interne Arrayzeiger des originalen Arrays bei der Verarbeitung bewegt. Angenommen, die foreach-Schleife ist komplett abgearbeitet, wird der interne Arrayzeiger (des originalen Arrays) auf das letzte Element zeigen.
Das ist hier aber schlecht beschrieben und wahrscheinlich deshalb auch von Dir missverstanden worden. $file\_array (die Adresse, die sich dahinter verbirgt) refernziert hier immer das Original-Array, auch in der foreach()-Schleifenfunktion. Der Passus "Kopie" bezieht sich auf die $value-Elemente. Der "Zeiger" auf die $value-Elemente zeigt jeweils auf eine Kopie der Array-Elementes.
$file\_array[$key] referenziert aber immer das Original-Element.
Intern wickelt PHP das noch anders ab.
Der Fehler muss aber irgendwo anders stecken.
Harzliche Grüße aus <http://www.annerschbarrich.de>
Tom
--
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
Nur selber lernen macht schlau