Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Kuinka saan tekstin aakkosjärjestyksessä taulukosta?

Sivun loppuun

vmjs [10.11.2003 21:08:39]

#

$viestit = array_reverse($viestit);

kääntää taulukon, mutta kuinka saan muuttujan arvot aakkosjärjestyksessä taulokosta?

odys [10.11.2003 21:30:25]

#

<?php
    $array = Array ("U", "ö", "a", "d", "c", 0, 5, 1);
    sort ($array);
    print_r ($array);
?>

Tomix [11.11.2003 15:02:27]

#

Muokataan hieman tuota odyksen esimerkkiä:

<?php
    $array = Array ("C", "ö", "a", "d", "c", "0", "5", "1");
    sort ($array);
    print_r ($array);
?>

Tuo tulostaisi ne siis tässä järjestyksessä:
0, 1, 5, C, a, d, c, ö
Tuo ei mielestäni ole aakkosjärjestys, joten miten saisin tulostettua taulukon solut aakkosjärjestyksessä, niin että isoista ja pienistä kirjaimista ei välitetä? Ja etenkin kun käytän ensin array_multisort:ia?

pistemies [11.11.2003 15:09:04]

#

strtolower muuttaa isot kirjaimet pieniksi
Jos välttämättä haluaa niiden näkyvän isona, voi sortin jälkeen str_replacella muutta tiettyjen sanojen tietyt kirjaimet isoiksi. :Ð

Tomix [11.11.2003 15:13:05]

#

Kyseessähän olisi nickilista, joka tulostetaan. Joten merkkien pitää olla tasan samat kuin ne oikeasti ovat. Ei taida olla mitään helppoa/valmista keinoa muuttaa ne ko. merkit sitten strtolowerin jälkeen takaisin isoiksi?

edit: Hmm, taisinkin keksiä.
edit2: Mitn keksiny...

Antti Laaksonen [11.11.2003 15:36:05]

#

natcasesort-funktio toimisi muuten, mutta se ei ymmärrä esim. skandinaavisten merkkien päälle. Teemmekin ikioman vertailufunktion nimeltä aakkoset, joka järjestää listan aakkosiin, oli mukana isoja tai pieniä kirjaimia tai vaikka ääkkösiäkin:

<?php
function aakkoset($a, $b) {
    if (strtolower($a) == strtolower($b)) return 0;
    return (strtolower($a) < strtolower($b)) ? -1 : 1;
}

$array = Array ("C", "ö", "a", "d", "c", "0", "5", "1");
usort ($array, "aakkoset");
print_r ($array);
?>

Lopputulos:

Array
(
    [0] => 0
    [1] => 1
    [2] => 5
    [3] => a
    [4] => C
    [5] => c
    [6] => d
    [7] => ö
)

Tomix [11.11.2003 15:54:12]

#

Noniin, kiitos Laaksonen. Sain sen toimimaan. =]

vmjs [11.11.2003 16:37:34]

#

Joo, kiitti hyvästä koodipätkästä. :D


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta