---
title: "array_multisort hur?"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/116256-array-multisort-hur"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "fredriksk"
published: "2004-11-19T14:52:04.000Z"
updated: "2004-11-25T09:33:06.000Z"
replies: 10
views: 354
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/php/116256-array-multisort-hur"
---

# array_multisort hur?

## #1 — fredriksk, 2004-11-19T14:52Z

Läser och läser på php.net men reder inte ut array_multisort riktigt... 

Jag har en matris enligt följande:

```php
$arr = array('namn' => 'bertil', 'ålder', => '67');
$arr = array('namn') => 'adam', 'ålder' => '19');
```

Nu vill jag sortera dessa på namn
hur skall array_multisort se ut?

Är inte riktigt med på detta... =)

Permalänk: https://www.webforum.nu/p/116256

## #2 — Matte, 2004-11-19T19:53Z

Det går även bra att använda [usort](http://se2.php.net/manual/en/function.usort.php):

```php
function cmp($a, $b) {

   if ($a['namn'] == $b['namn']) {
      return 0;
   }
   
   return $a['namn'] < $b['namn'] ? -1 : 1;

}

usort($arr, 'cmp');
```

Permalänk: https://www.webforum.nu/p/1489794

## #3 — The_Hulk, 2004-11-20T11:04Z

stämmer verkligen koden du har skrivit, tycker där finns lite får många , och )

andra raden i din PHP-kod, bygger den verkligen ut arrayen? ser ut som du tilldelar $arr helt nya värden.

Du har nog missat något när du bygger din matris.

om du sätter \[\] efter $arr så kanske det hade fungerat om du tar bort de överflödiga tecknen som finns på båda raderna.

har du testat din kod innan du publiserade den?

Permalänk: https://www.webforum.nu/p/1489898

## #4 — fredriksk, 2004-11-22T13:10Z

ok... nu är jag änu mer förvirrad... 

Om vi skall göra det jag skrev med array_multisort... hur gör man dårå?

Permalänk: https://www.webforum.nu/p/1490749

## #5 — Matte, 2004-11-22T19:22Z

För att få utgångsläget riktigt för oss, hur är det egentligen din array / dina arrayer ser ut ?
Jag har uppfattad det så här:

```
$arr = array(
  array('namn'=>'bertil', 'ålder'=>'67'),
  array('namn'=>'adam', 'ålder'=>'19')
);
```

 
Eller om man visar det på ett annat sätt:

```
Array
(
    [0] => Array
        (
            [namn] => bertil
            [ålder] => 67
        )

    [1] => Array
        (
            [namn] => adam
            [ålder] => 19
        )

)
```

Permalänk: https://www.webforum.nu/p/1490915

## #6 — fredriksk, 2004-11-23T07:28Z

> **Matte skrev:**
>
> Det går även bra att använda [usort](http://se2.php.net/manual/en/function.usort.php):
>
>
> ```php
> function cmp($a, $b) {
> 
>    if ($a['namn'] == $b['namn']) {
>       return 0;
>    }
>    
>    return $a['namn'] < $b['namn'] ? -1 : 1;
> 
> }
> 
> 
> usort($arr, 'cmp');
> ```

Jag testkörde koden igår och det fungerade precis så som jag önskade! Men vilken konsig kod det är!!! Fattar inte mycket av den inte... =)

Speciellt det här:

```php
return $a['namn'] < $b['namn'] ? -1 : 1;
```

Permalänk: https://www.webforum.nu/p/1491044

## #7 — fiddler, 2004-11-23T07:53Z

> **fredriksk skrev:**
>
> Men vilken konsig kod det är!!! Fattar inte mycket av den inte... =)
> 
> Speciellt det här:
>
>
> ```php
> return $a['namn'] < $b['namn'] ? -1 : 1;
> ```

En elegant rad som returnerar antingen -1 eller 1 beroende på om vilkoret är sant eller falskt.

Permalänk: https://www.webforum.nu/p/1491049

## #8 — Matte, 2004-11-23T12:23Z

Eller med andra ord

```php
return $a['namn'] < $b['namn'] ? -1 : 1;
```

 
är en kortform för

```php
if ($a['namn'] < $b['namn']) {
   return -1;
} else {
   return 1;
}
```

Permalänk: https://www.webforum.nu/p/1491199

## #9 — fredriksk, 2004-11-24T08:37Z

aha... 

Men nu kom jag på en pryl till som kanske gör att jag ändå måste använda multisort... 

Nu vill jag nämligen att den skall sortera först på namn sen på ålder. Alltså namnen i bokstavsordning och sedan på namnet. 

alltså: finns det två bertil så sorteras den yngsta bertil först... 

Hur gör man det då?

Permalänk: https://www.webforum.nu/p/1491683

## #10 — Matte, 2004-11-24T13:15Z

Det går i.o.f.s. fortfarande att använda usort():

```php
function cmp($a, $b) {

   if ($a['namn'] == $b['namn']) {

      if ($a['ålder'] == $b['ålder']) {
         return 0;
      }

      return $a['ålder'] < $b['ålder'] ? -1 : 1;

   }
   
   return $a['namn'] < $b['namn'] ? -1 : 1;

}

usort($arr, 'cmp');
```

Permalänk: https://www.webforum.nu/p/1491842

## #11 — fredriksk, 2004-11-25T09:33Z

Japp, funkis!

Jag tackar och bugar!

Permalänk: https://www.webforum.nu/p/1492230

---

Tråden på webben: https://www.webforum.nu/amne/php/116256-array-multisort-hur
