Avatar billede minau Nybegynder
02. juli 2004 - 00:58 Der er 5 kommentarer og
1 løsning

sort'er efter 10 tegn

Hej

jeg har nogen mapper der heder noget ala

12345551_abe
44456221_citron
01220122_æble

Jeg har dem i et array (altså - strings med navnene) - nu vil jeg gerne have dem sorteret - men kun efter delen der kommer efter _ - altså

abe
citron
æble

hvordan gør jeg det nemmest?
Avatar billede iknowstuff Nybegynder
02. juli 2004 - 01:16 #1
prøv denne, antager at det altid kun er tal som står foran _

$arr er dit array

function compare($a, $b){
    $a = preg_replace("/^\d*_(.*)$/", "$1", $a);
    $b = preg_replace("/^\d*_(.*)$/", "$1", $b);
    return strcmp($a, $b);
}

usort($arr, "compare");
Avatar billede iknowstuff Nybegynder
02. juli 2004 - 01:25 #2
nu skriver du jo, at det altid er fra den 10. plads, så er denne bedre:

$a = substr($a, 9);
$b = substr($b, 9);
Avatar billede minau Nybegynder
02. juli 2004 - 01:34 #3
det er faktisk stamp der er foran - så

    $a = preg_replace("/^\d*_(.*)$/", "$1", $a);
    $b = preg_replace("/^\d*_(.*)$/", "$1", $b);

virker fint (forstår hat af preg_replace)

smid svar :-)
Avatar billede iknowstuff Nybegynder
02. juli 2004 - 01:41 #4
okay

\d* finder alle tallene
(.*) finder alt efter _ og lader $1 pege på det den finder

replace erstatter hele linien med indholdet af parentesen, $1
Avatar billede minau Nybegynder
02. juli 2004 - 01:43 #5
mok - men hvorfor /^ ?
Avatar billede iknowstuff Nybegynder
02. juli 2004 - 01:52 #6
^ angiver start på streng, intet kan stå foran
$ angiver slut, -"-

ingen af dem er egentlig nødvendige at have med i ovenstående eksempel, prøv uden, og det vil også virke.

/ angiver bare start og slut på det regulære udtryk
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