Olen tehnyt php:llä kilpailuun osallistuville ilmoittautumis-sivun. Kukin osallistuja tulostuu tietoineen omalle riville. Nyt nämä pitäisi arpoa lähtöjärjestykseen?
Onko hyviä ideoita?
Vähän tarkempi kuvaus voisi auttaa auttamaan. Onko tiedot tietokannassa? Täytyykö lähtejärjestys tallettaa jonnekkin, vai onko lähtöjärjestys "sessiokohtainen"?
Taulukolla tuo kuitenkin kannattanee hoitaa, joten ei muuta kuin tiedot taulukkoon ja taulukko sekaisin vaikka shuffle()-funktiolla. Tai jos tiedot ovat esim. MySQL-kannassa saat ne sieltäkin jo satunnaisessa järjestyksessä liittämällä SQL-lauseeseen ORDER BY RAND()
Eikös tuon voisi tehdä niin, että asettaa osallistujien nimet jonkinmoiseen taulukkoon ja sitten sekoittelee sitä, ja lopulta tulostaa sen järjestyksen?
Tai arpoo jokaiselle käyttäjälle satunnaisen merkkijonon (vaikka 32 merkkiä "a5rs854 ... fd43" ) ja järjestää sen mukaan "aakkosjärjestykseen".
Aina kun "satunnaisuutta" tarvitaan, arvotaan jokaiselle uusi merkkijono. Mutta tulostaessa "alkuperäinen" "satunnainen" järjestys pysyy samana.
Tiedot on .txt tiedostossa. Vois olla hyvä kopioida tuolta tiedot toiseen tiedostoon jossa arvonta/sekoitus tapahtuisi, ehkä. Onko muita vaihtoehtoja kuin tuo shuffle.
peg kirjoitti:
Tiedot on .txt tiedostossa. Vois olla hyvä kopioida tuolta tiedot toiseen tiedostoon jossa arvonta/sekoitus tapahtuisi, ehkä. Onko muita vaihtoehtoja kuin tuo shuffle.
Tarvitaanko jostain syystä muita vaihtoehtoja?
Mitenkä olisi näin:
$file = 'a'; $array = file($file); suffle($array); file_put_contents(implode("\r\n",$array),$file);
Toki voit kirjoittaa ne uuteenkin tiedostoon.
Nuts @ php.net kirjoitti:
WARNING ON WINDOWS:
file() function will add "\r\n" in to the end of the row, even if you use only "\n" char to make rows in the file!On UNIX systems there is no such problem.
um, no windowsille:
file_put_contents(implode('',$array),$file);
Heh kerkesimpäs :D
Muokataan sitten lainauskin kuntoon.
Huom: file() funktio ei poista rivinvaihtoja, joten implodesta pitää ottaa pois \r\n ettei tule tuplarivinvaihtoja.
Edit: Siis ei se käyttiksest johu jättääkö se rivinvaihdot sinne loppuun vai ei, file() funktio ei jokatapauksessa poista niitä rivinvaihtoja sieltä joka rivin lopusta. Mutta windowsilla se muuttaa "\n" rivinvaihdot muotoon "\r\n".
Aihe on jo aika vanha, joten et voi enää vastata siihen.