02. august 2004 - 09:03
Der er
10 kommentarer og 1 løsning
Sortering af et array
Jeg har et array som jeg skal have sorteret. Det ser sådan her ud Jeg skal have det sorteret det efter de sidste keys, dvs id, info add_date eller navn. Nogle ideer til hvordan det kan laves ? Synes ikke jeg kan finde en function der kan sortere på den måde jeg skal bruge. Array ( [0] => Array ( [id] => 100500001 [info] => ST340014A (Seagate) [add_date] => 2004-06-14 [navn] => Ikke udlånt ) [1] => Array ( [id] => 100500002 [info] => ST340014A (Seagate) [add_date] => 2004-06-14 [navn] => Kabinet 47 ) [2] => Array ( [id] => 100500003 [info] => ST340014A (Seagate) [add_date] => 2004-06-14 [navn] => Kabinet 46 ) [3] => Array ( [id] => 100500004 [info] => ST340014A (Seagate) [add_date] => 2004-06-14 [navn] => Kabinet 49 ) }
Annonceindlæg fra Admin By Request
02. august 2004 - 09:25
#1
Du skal nok bruge
http://php.net/usort Men jeg forstår ikke hvordan du skal have det sorteret?
02. august 2004 - 09:49
#2
Det skal være sådan at jeg kan sortere efter id, stigende og faldende. Men fordi det er et array, inde i et andet array ved jeg ikke hvordan det skal laves.
02. august 2004 - 09:56
#3
Ok, hvis det kun er id du skal sortere på er det nemt nok. De to sammenligningsfunktioner giver voksende og aftagende: $vare[] = Array("id"=>7913,"navn"=>"sodavand1"); $vare[] = Array("id"=>7513,"navn"=>"sodavand2"); $vare[] = Array("id"=>9913,"navn"=>"sodavand3"); $vare[] = Array("id"=>5913,"navn"=>"sodavand4"); $vare[] = Array("id"=>7914,"navn"=>"sodavand5"); function sammenlign1($a,$b) { return $a['id']-$b['id']; } function sammenlign2($a,$b) { return $b['id']-$a['id']; } usort($vare,'sammenlign2'); print_r($vare);
05. august 2004 - 12:46
#4
Jeg skal også bruge det på navn, altså bogstaver i det hele taget.. Nogle ideer til hvordan det kan laves ?
05. august 2004 - 12:48
#5
Ja, hvis du kan forklare det, så jeg kan forstå hvordan du vil sortere ;)
05. august 2004 - 12:58
#6
Det skal laves sådan jeg kan sortere det på navn, inde i det indereste array. På den måde at når jeg laver en print_r på arrayet er det sorteret efter det indereste array af navn f.eks. Det er lidt svært at forklar. hehe. Men håber du forstår det.
05. august 2004 - 13:35
#7
Men i det tilfælde skal du så ikke sortere efter id, men alene navn? Skal det sorteres case-sensitivt eller ikke?
05. august 2004 - 13:47
#8
Det skal være sådan jeg kan sorter efter alle felter i mit indereste array og lige meget med case-sensitiv, det er ikke nødvendigt
05. august 2004 - 14:03
#9
Godt nok, jeg hopper ud i det. Prøv denne som argument til usort: function sammenlign3($a,$b) { return strcmp($b['navn'],$a['navn']); }
05. august 2004 - 14:10
#10
Det virkede, lige ved første test i hvert fald. Tror også det virker ved det som jeg skal bruge det til. Jeg tester det lige godt igennem og så vender jeg tilbage. Tak for nu.
20. oktober 2005 - 08:03
#11
lukket
Vi tilbyder markedets bedste kurser inden for webudvikling