Hei, eli ongelma olisi seuraavanlainen:
minulla on .csv tiedosto, jossa on kenttiä tähän malliin:
viikko;pvm;teksti
6;4/2/2008;tekstiä
6;5/2/2008;tekstiä
7;12/2/2008;tekstiä
2;5/1/2009;tekstiä
ongelma tulee siis siinä, että kun nuo pitäisi saada nousevaan järjestykseen ensin vuoden ja sitten viikon mukaan, mutta minulla ei näin aloittelijana ole hajuakaan, kuinka saisin tuolta rivin keskeltä otettua ensisijaisen lajitteluehdon.
Kenttien järjestyksen muuttaminenkaan ei oikein houkuttele, tulisi liikaa korjailtavaa kun nyt jälkiviisaana vasta tuon virheeni huomasin.
löysin jonkin "usort"- funktion, mutta lieneekö siitä apua, ja kuinka sitä käytetään?
.csv tiedosto ei ole mikään hirveän iso (muutama kt), eikä tule olemaankaan sen isompi, joten nopeudesta tuskin tarvitsee huolehtia
Tähän on 1000 ja 1 erilaista toteutustapaa. Ohessa muutama.
Tämän koodivinkin toisessa listauksessa on yksi tapa, mutta hieman yksinkertaisempi ratkaisu voisi olla:
1) Luet datan taulukkoon (file())
2) Käyt rivit läpi silmukalla ja muodostat toisen taulukon, jonka indeksinä toimii rivistä parsittu vuosi-viikko -kokonaisluku.
3) Järjestät toisen taulukon ksort()-funktiolla
4) Tulostat taulukon toisessa silmukassa.
Kaikkein yksinkertaisin ratkaisu olisi tosiaan, jos data olisi tiedostossa jo valmiiksi vuosi;viikko;muut -muodossa, jolloin voisit järjestää file():n palauttaman taulukon suoraan sort()-funktiolla.
Esim. list ja explode ovat ystäviäsi (kera mainitsemasi usortin). Tai tarjoo EDi niin postaan tuon omani :).
No joo... Ihan kelpo vinkkejä, mutta kun tuota koodiani tarpeeksi tuijottelin, niin päätinpä kuitenkin lähteä uudelleenjärjestelylinjalle, eli vuosi alkuun ja sillä homma hoitoon.
anteeksi turha kysely :)
Jep, kansainvälinen standardi YYYY-MM-DD on kätevin päivämäärämuoto, eli kannattaa myös käyttää nollia (eli tänään on 2008-02-04). Sorttii sitten oikein merkkijononakin.
Aihe on jo aika vanha, joten et voi enää vastata siihen.