Miten saisi helposti tiedostosta taulukkoon luetut tiedot järjestettyä aakkosiin siten, ettei ole väliä isoilla ja pienillä kirjaimilla???
Eli käytännössä palvelimella on 'ilmolista.txt' -niminen tiedosto, jossa on dataa:
Nimi1|muuta|muuta|muuta
nimi2|muuta|muuta|muuta
Nimi3|muuta|muuta|muuta
Osa riveistä siis alkaa isolla kirjaimella ja osa saattaa alkaa pienellä. Tavallisella sort -komennolla (kts. alla) kun nämä järjestelee, niin tuloksena on että ensin tulee isolla kirjaimella alkavat rivit ja vasta sitten pienellä kirjaimella, kun tavoite olisi että rivit tulee aakkosissa riippumatta isosta/pienestä kirjaimesta.
Muutat ensin vaikka tiedot pieniksi/isoiksi kirjaimiksi ja järjestelet sitten? Vai täytyykö tietojen säilyä muuttumattomana?
Tässä mun ehdotus. Tiedot pysyy muuttumattomina. Muitakin vaihtoehtoja on varmasti mutta tämä tuli mulle ekana mieleen.
<?php //luetaan viestit taulukkoon $viestit = file("ilmolista.txt"); //järjestetään viestit aakkosiin for($i=0;$i<count($viestit);$i++) { $osat = explode("|",$viestit[$i]); $nimet[$i] = strtolower($osat[0]); } array_multisort($nimet,SORT_ASC,$viestit); ?>
Kiitokset koodipätkästä ozmoulle; toimii kun junan vessa =)
EDIT: Piti kuitenkin vielä muokata koodia siten, että järjestämisskripitä ei ajeta, jos ilmolista.txt on tyhjä (tulee array_multisortista muuten virheilmoitus)
<?php //viestien määrä on suoraan taulukon rivien määrä $viestimaara = count($viestit); //jos viestejä on, järjestetään viestit aakkosiin if ($viestimaara !=0){
...ja tähän sitten for...
Itse olisin käyttänyt usort:ia.. (toivottavasti muistan alkukirjaimen oikein) :)
Aihe on jo aika vanha, joten et voi enää vastata siihen.