Tervehdys!
Ongelma on seuraavanalainen. Minulla on kuvakansioita joiden nimet ovat:
2010
2009
2008
2007
Sekalaisia
Vanhat
Nyt kun luen kuvakansioiden nimet taulukkoon ja tulostan taulukon ulos tulee:
2007
2008
2009
2010
Sekalaisia
Vanhat
Sen sijaan pitäisi saada tulostettua uusin vuosi ensin kuten ensimmäisessä kohdassa.
Miten tekisin tuon fiksusti PHP-kielellä? Tällä hetkellä tulostan taulukon kahteen kertaan jättäen ensimmäisellä kerralla pois tekstimuotoiset nimet ja tulostan ne vasta toisella kerralla. Tuntuu, että voisi tehdä helpomminkin.
Kiitoksia!
Äkkiseltään ajatellen kyllä jo käyttämäsi tapa kuulostaa aika optimaaliselta.
Tuskin siihen paljon parempaakaan tapaa on. Jos kuitenkin haluat välttämättä käyttää jotain erikoisempaa, voit järjestää taulukon usort-funktiolla, jolle voi antaa itse tehdyn vertailufunktion, tai voit erotella taulukosta erilaiset arvot ja järjestää ne erikseen. Tässä on yksi toteutustapa:
<?php $nimet = array(1, 2, 3, "a", "b", "C", "A"); $luvut = preg_grep('#^[0-9]+$#', $nimet); $tekstit = array_diff($nimet, $luvut); natcasesort($tekstit); rsort($luvut); $nimet = array_merge($luvut, $tekstit); var_dump($nimet); # debug...
Kiitoksia! Jotain tuontapaista ajattelinkin.
Aihe on jo aika vanha, joten et voi enää vastata siihen.