Avatar billede astengaard Nybegynder
19. april 2004 - 11:45 Der er 6 kommentarer og
1 løsning

Sortering efter talværdi

Hejsa

Jeg har et array bestående af en streng og en talværdi eks. A 150, A 20, A 1000, B 35 osv.

Jeg vil gerne have det soreteret, så det først og fremmest bliver alfabetisk sorteret og derefter sorteret efter talværdi.

Hvis jeg bruger PHP's indbyggede sortering bliver det jo til:
A 1000
A 150
A 20
B 35

Er der en smart måde, eller skal det gøres på den hårde måde med først en alfabetisk sortering og derefter trække talværdier ud og sammenligne dem?

/Allan
Avatar billede taskmgr Nybegynder
19. april 2004 - 11:48 #1
Avatar billede dennismp Nybegynder
19. april 2004 - 11:57 #2
Avatar billede dennismp Nybegynder
19. april 2004 - 12:12 #3
<?php
$a= array();
$a[] = 'A 1000';
$a[] = 'A 150';
$a[] = 'A 20';
$a[] = 'B 35';

usort($a,'myarraysort');

for($i=0;$i<count($a) && $i < 10;$i++ )
    print ($i+1) . ": " . $a[$i] . "<br>";

function myarraysort($a,$b) {
    list($aalfa,$anum) = explode(" ",$a);
    list($balfa,$bnum) = explode(" ",$b);

    if ($aalfa == $balfa) {
        if( $anum == $bnum )
            return 0;
        return ($anum < $bnum) ? -1 : 1;
    }
    return ($aalfa < $balfa) ? -1 : 1;
}
?>
Avatar billede astengaard Nybegynder
19. april 2004 - 12:36 #4
>>taskmgr: strengen og talværdien er samlet som en værdi, så jeg kan ikke bruge den funktion du nævner.

<<dennismp: Det er lige nøjagtig hvad jeg ledte efter, tak!
Avatar billede taskmgr Nybegynder
19. april 2004 - 12:40 #5
Ok, jeg havde mine anelser om det, men så kom dennismp heldigvis til undsætning :)
Avatar billede dennismp Nybegynder
19. april 2004 - 12:45 #6
Den opmærksomme læser vil kunne genkende 80% af scriptet fra et andet spørgsmål der blev stillet før middag :-).

forresten; tak for din kommentar taskmgr :)
Avatar billede taskmgr Nybegynder
19. april 2004 - 13:03 #7
Den er velfortjent :)
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