Går det bra att göra tvärtom. Läsa in en textfil i en array, och sedan slumpa ur arrayen:
$rad = file("textfil.txt");
srand ((float) microtime() * 10000000);
$randindex = array_rand ($rad);
echo $rad[$randindex];
6 svar · 238 visningar · startad av MoneyOpps.nu
Hur gör jag följande ??
Jag vill slumpa fram en variabel på en sida, typ sida.php
$rad = rand (1, 10)
Sen vill jag läsa rad $rad från en textfil.
öppna textfil.txt
$string = "läs rad $rad"
stäng textfil.txt
Hur gör jag ?
Rätt dålig på php märker jag :r
Går det bra att göra tvärtom. Läsa in en textfil i en array, och sedan slumpa ur arrayen:
$rad = file("textfil.txt");
srand ((float) microtime() * 10000000);
$randindex = array_rand ($rad);
echo $rad[$randindex];
Det borde ju fungera.... Ska testa..
Tackar !
Fungerade perfekt :e
Nu har jag bara en sak till som jag kom på nu.
Går det att slumpa fram enbart jämna tal ?
Alltså 2,4,6,8,..... osv....
Skulle vara bra !
$rad = file("textfil.txt");
srand ((float) microtime() * 10000000);
$randindex = array_rand ($rad);
if ($randindex%2 != 0){
while ($randindex%2 != 0) $randindex = array_rand ($rad);
}
echo $rad[$randindex];
En liten varning här. Skulle du välja att istället ha udda rader, tänk då på att om en fil bara har en rad så kommer while-slingan att vara oändlig !
Det fungerade som det var tänkt, men om textfilen är stor så blir det lite segt eftersom hela textfilen läses in och sen slumpas det en rad ur den.
Det var därför jag vill slumpa ett värde för att sedan enbart läsa in just den raden.
Det kanske är knepigt !?
Ursprungligen av MoneyOpps.nu **Det fungerade som det var tänkt, men om textfilen är stor så blir det lite segt eftersom hela textfilen läses in och sen slumpas det en rad ur den.
Det var därför jag vill slumpa ett värde för att sedan enbart läsa in just den raden.
Det kanske är knepigt !?**
Det är något som överstiger min förmåga.
Dels ska man, efter att ha öppnat filen, läsa av hur många rader filen innehåller, dels ska man gå till början på en slumpad rad. Jag klarar inget av det, men någon annan kanske vet hur man fixar det, själv är jag lite för mycket nybörjare.
Men hur stora filer hade du tänkt dig. Jag testade att läsa in med file() och slumpa, på en fil med innehåll:
Detta är rad 1
Detta är rad 2
... osv
med 10 000 rader / 195kB : c:a 0,2 sekunder
med 100 000 rader / 2040kB : drygt 2 sekunder
Detta på en fyra år gammal compaq. :)