phpbar.de logo

Mailinglisten-Archive

[php] verzweiflung

[php] verzweiflung

Jomo Aykay php_(at)_phpcenter.de
Fri, 31 Aug 2001 18:47:40 +0200


hmm, habe deines ausporbiert mit einem textfile, das so aussieht:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20


wenn man das skript ein paar mal laufen laesst, und sich dann das
textfile wieder ansieht, war es bei mir so, dass dreimal alles ok war
beim vierten mal aber war zwar auch ein element weniger aber die zeile
war noch immer da!! dh. zwar der inhalt war geloescht aber die leere
zeile, die ja auch als array element gilt, war noch da. dann gehts
weider, dan niweder nciht. ich versteh das nicht!




>Hallo,
>
>ich hab' deine Beschreibung nachgebaut und bei mir l=E4uft es so fehler=
frei.
>
><=3Fphp
>$array =3D file( "textfile.txt" );
>$werte =3D  count ( $array );
>echo "wert: $werte<br>";
>mt=5Fsrand ((float) microtime() * 10100100);
>$line =3D _(at)_mt=5Frand(0,($werte-1));
>echo "Line $line wird geloescht<br>";
>
>while (list ($key , $value) =3D each($array))
>{
> echo "$key : $value <BR>";
>};
>echo "<br>";
>
>unset ($array[$line]);
>
>reset($array);
>while (list ($key , $value) =3D each($array))
>{
> echo "$key : $value <BR>";
>};
>
>$handle =3D fopen("textfile.txt" , "w+");
>fputs( $handle , implode("" , $array ));
>fclose ($handle);
>=3F>
>
>
>
>----- 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 =3D file(textfile.txt);
>$anzahl =3D sizeof($list); // die anzahl der elemente dieses arrays
>
>
>das file besteht aus einer liste aus URLs, untereinander, durch einfach=
e
>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=5Fsrand ((float) microtime() * 10100100);
>$line =3D mt=5Frand(0,($anzahl-1));
>
>
>dann wird die variable $hostname zugewiesen:
>
>$hostname =3D rtrim($list[$line]);
>
>
>danach soll dieses arrayelement aus dem array geloescht werden, und zwa=
r
>mit:
>
>unset ($list[$line]);
>
>
>
>dann wird das ganze wieder als file abgespeichert:
>
>$templist =3D implode ("", $list);
>$lt =3D fopen(textfile.txt,"w+");
>if ($lt){
>fwrite($lt, $templist);
>fclose ($lt);
>}
>
>danach wird das skript wieder von sich selbst aufgerufen, das ganze din=
g
>l=E4uft 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 (=3D eine zeile =3D eine URL) au=
s 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=F6scht, 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
>
>-- 
>** 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