pgdx Skrevet 5. juni 2007 Skrevet 5. juni 2007 (endret) Tenkte jeg skulle lage en tabell over noen fotballag som spiller i en serie. Jeg ønsker da å lagre alle lagene i en egen klasse for fotballag, med feltvariabler for antall kamper spilt, navn, målforskjell og poeng. Deretter vil jeg skrive de ut i en tabell sortert etter først antall poeng, deretter etter målforskjell. I Java har jeg vært vant til å implementere interfacet Comparable<E> og skrive min egen compareTo-metode for sortering. Finnes det noen måter å lage egne sorteringsmetoder som det innebygde biblioteket kan bruke når det skal sortere tabellen for meg? LØSNING function cmp($a, $b) { if (strcmp($b->hentPoeng(), $a->hentPoeng()) != 0) { return strcmp($b->hentPoeng(), $a->hentPoeng()); } else return strcmp($b->hentForskjell(), $a->hentForskjell()); } usort($alleLag, 'cmp'); Endret 6. juni 2007 av pgd
Peter Skrevet 7. juni 2007 Skrevet 7. juni 2007 (endret) http://no2.php.net/manual/en/function.usort.php Så får du skrive en callback-funksjon som sammenligner objektene. EDIT: ai, så ikke at du hadde skrevet løsningen over. Eneste jeg reagerer på (bortsett fra at du koder på norsk, selvsagt), er at du bruker en strengesammenligningsfunksjon for å sammenligne tall? En annen "liten" optimalisering er å ta vare på verdien fra det første strcmp-kallet, så du kan returnere verdien istedenfor å gjøre kallet enda en gang. Endret 7. juni 2007 av Nazgul
pgdx Skrevet 8. juni 2007 Forfatter Skrevet 8. juni 2007 Ja, har fjernet strengsammenligningen og kjørt mer sortering i SQL-queryen der det er mulig. Resten kjører jeg bare $b->hentPoeng() - $a->hentPoeng()
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå