Mailinglisten-Archive |
Hallo, ich hab' deine Beschreibung nachgebaut und bei mir läuft es so fehlerfrei. <?php $array = file( "textfile.txt" ); $werte = count ( $array ); echo "wert: $werte<br>"; mt_srand ((float) microtime() * 10100100); $line = _(at)_mt_rand(0,($werte-1)); echo "Line $line wird geloescht<br>"; while (list ($key , $value) = each($array)) { echo "$key : $value <BR>"; }; echo "<br>"; unset ($array[$line]); reset($array); while (list ($key , $value) = each($array)) { echo "$key : $value <BR>"; }; $handle = fopen("textfile.txt" , "w+"); fputs( $handle , implode("" , $array )); fclose ($handle); ?> ----- Original Message ----- From: "Jomo Aykay" <ttaggg_(at)_mail.ru> To: <php_(at)_phpcenter.de> Sent: Thursday, August 30, 2001 9:52 PM Subject: [php] verzweiflung hallo. ich habe folgendes problem mit einem php skript: das skript funkt so, dass es ein textdatenfile ausliest: $list = file(textfile.txt); $anzahl = sizeof($list); // die anzahl der elemente dieses arrays das file besteht aus einer liste aus URLs, untereinander, durch einfache returns getrennt, (returns als unix line feeds, \r) www.abc.com/ www.def.com/hallo.html www.usw.net danach wird im skript per zufall eine zeile aus diesem array ausgesucht: mt_srand ((float) microtime() * 10100100); $line = mt_rand(0,($anzahl-1)); dann wird die variable $hostname zugewiesen: $hostname = rtrim($list[$line]); danach soll dieses arrayelement aus dem array geloescht werden, und zwar mit: unset ($list[$line]); dann wird das ganze wieder als file abgespeichert: $templist = implode ("", $list); $lt = fopen(textfile.txt,"w+"); if ($lt){ fwrite($lt, $templist); fclose ($lt); } danach wird das skript wieder von sich selbst aufgerufen, das ganze ding läuft also wieder ab. und jetzt zum auftauchenden problem: ich habe zum testen ein <echo $anzahl> reingetan. eigentlich muesste ja jetzt bei jedem aufruf EIN (1) element (= eine zeile = eine URL) aus dem array geloescht werden und dann im file gespeichert werden. usw. usw. bis das text file leer ist. das eigenartige ist nun aber, dass es manchmal gleich mehrere zeilen (meist 2) löscht, dann gehts wieder fuer ein paar aufrufe scheinbar wieder normal, dann loescht er mir wieder gleich zwei zeilen, einmal hatte ich im zugehoerigen textfile eine leere(!) zeile. ich verstehe einfach nicht, wie das sein kann!! habe auch schon zum debuggen ein <echo $anzahl> vor dem unset und danach reingegeben, das stimmt aber immer. aber beim naechsten aufruf des skripts passiert es manchmal dass er um mehr als nur eine zeile weniger hat. manchmal aber auch nicht. ich verzweifle noch! bitte um rat! danke jomo -- ** http://www.php-center.de ** Die PHP-Liste: mailto: php_(at)_phpcenter.de http://lists.phpcenter.de/mailman/listinfo/php
php::bar PHP Wiki - Listenarchive