Avatar billede elskermad.dk Nybegynder
15. februar 2008 - 17:02 Der er 8 kommentarer og
1 løsning

speciel sorteringsfunktion

Hej Eksperter!

Jeg har brug for hjælp til at lave en speciel sorteringsfunktion.

Den skal kunne sortere et array med tøjstørrelser så de mindste størrelser kommer først.

Størrelserne er angivet som eksemplerne herunder:
Small 37/38
Small 38/39
Medium 40/41
Large 42/32
X-Large 43/44
XX-Large 44/45

Jeg ved det er noget med at lave en funktion og returnere 0'ere og 1'ere alt efter hvad den skal, men hvordan det virker ved jeg ikke :)

På forhånd tak :)
Avatar billede olebole Juniormester
15. februar 2008 - 17:04 #1
<ole>

Skal der sorteres på første eller andet tal?

/mvh
</bole>
Avatar billede elskermad.dk Nybegynder
15. februar 2008 - 17:13 #2
godt spørgsmål :) det må være på første
Avatar billede arne_v Ekspert
15. februar 2008 - 17:14 #3
Hvis vi antager at Large er en slaa fejl, saa maa det vel give samme sortering.
Avatar billede elskermad.dk Nybegynder
15. februar 2008 - 17:24 #4
Large er en slåfejl ja :)

Men bare en sortering på første tal er super!
Avatar billede olebole Juniormester
15. februar 2008 - 17:28 #5
Hvis vi antager, at der, selvom Large er en slåfejl, godt kan forekomme et 'andet-tal' større end det første, kunne det være noget i stil med:

$arr = array(
    "Small 38/39",
    "XX-Large 44/45",
    "Medium 40/41",
    "Large 42/32",
    "Small 37/38",
    "X-Large 43/44"
);

function compare($a, $b) {
    preg_match("#(\d{2})/#", $a, $aa);
    preg_match("#(\d{2})/#", $b, $bb);
    if ($aa[1]>$bb[1]) return 1;
    if ($aa[1]<$bb[1]) return -1;
    return 0;
}
usort($arr, "compare");

var_dump($arr);
Avatar billede elskermad.dk Nybegynder
15. februar 2008 - 17:40 #6
ser ud til at virke perfekt olebole :) mange tak!

hvordan virker det? hvordan ved den hvad der er størst af small og large?

og generelt hvordan er teknikken? - og et svar! ;)
Avatar billede olebole Juniormester
15. februar 2008 - 17:47 #7
usort sorterer ved hjælp af en brugerdefineret sammenlignings funktion:
    http://dk.php.net/manual/en/function.usort.php

preg_match finder et bestemt mønster i en streng:
    http://dk.php.net/manual/en/function.preg-match.php

I koden herover ledes efter en delstreng, der består af to tal, efterfulgt af en slash. De to tal hives ud af hovedstrengen og lægges i array'et $aa (henholdsvis $bb).
Derefter sammenlignes de to tal $aa og $bb - og sammenlignings funktionen sættes til at returnere en passende værdi til usort funktionen
Avatar billede olebole Juniormester
15. februar 2008 - 17:49 #8
"og lægges i array'et $aa (henholdsvis $bb)." skulle være "og lægges i strengen $aa (henholdsvis $bb)."
Avatar billede olebole Juniormester
15. februar 2008 - 18:14 #9
Tak for ponts  :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester