---
title: "Sortera flerdimensionell array"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/171161-sortera-flerdimensionell-array"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "learn"
published: "2008-04-29T15:19:57.000Z"
updated: "2008-05-13T09:31:59.000Z"
replies: 14
views: 867
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/171161-sortera-flerdimensionell-array"
---

# Sortera flerdimensionell array

## #1 — learn, 2008-04-29T15:19Z

Se även mitt tidigare [inlägg](http://www.webforum.nu/showthread.php?t=167260) 

Jag har en array med länkar, uppbyggd enligt följande:

```php
$min_array[1] = array('Länk' => array('<a href="1.html">', 'Länk 1', '</a>'), 'Beskrivning'=>'abc')

$min_array[2] = array('Länk' => array('<a href="2.html">', 'Länk 2', '</a>'), 'Beskrivning'=>'def')
```

 
Nu vill jag kunna sortera arrayen på önskad "kolumn" (key).

Jag har tidigare använt mig av [usort](http://se2.php.net/manual/sv/function.usort.php):

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

    global $ordning;

    return strcmp($a[$ordning], $b[$ordning]);
    
}

usort($min_array, "sortera_array");
```

Där **$ordning** innehåller det jag vill sortera på. Denna funktion fungerar inte när jag vill sortera på Länk ("Länk 1" eller "Länk 2").

Hur ska jag modifiera min funktion för att den ska fungera i alla lägen?

Tack på förhand!  :bire

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

## #2 — learn, 2008-05-01T09:23Z

Någon?

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

## #3 — learn, 2008-05-01T13:03Z

Ingen som kan hjälpa mig?  :(

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

## #4 — nitro2k01, 2008-05-01T13:16Z

Spontant tanke: Byt ut ä't i variabel-namnet till ett i. (Alltså kalla indexet för link istället för länk.)

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

## #5 — learn, 2008-05-01T14:18Z

Ingen skillnad... Funktionen måste nog anpassas en del etc.

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

## #6 — learn, 2008-05-11T11:25Z

Ingen som kan hjälpa mig? Jag lyckas inte fixa detta själv... :(

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

## #7 — Troxy, 2008-05-11T19:53Z

Varifrån kommer datat?
Är det möjligtvis ett resultat av en SQL-fråga?

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

## #8 — learn, 2008-05-12T19:35Z

Hej

Ja, datan som sparas i en array kommer från en SQL-fråga. Någon som kan hjälpa mig?

Kanske inte går att sortera denna typ av array?

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

## #9 — SPiN, 2008-05-12T19:39Z

Varför sorterar du inte i SQL-frågan?

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

## #10 — learn, 2008-05-12T19:44Z

Det som stoppas in i arrayen kommer från flera olika SQL-frågor... Jag vill gärna sortera arrayen. Snälla hjälp mig :)

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

## #11 — yador, 2008-05-12T19:50Z

Hur vill du att array:en ska se ut efter en sortering?

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

## #12 — learn, 2008-05-12T20:08Z

Hmm, hur menar du nu? Den ska se ut som innan fast sorterad på det man sorterat den efter ($ordning).

> **learn skrev:**
>
> Jag har en array med länkar, uppbyggd enligt följande:
> 
>
>
> ```php
> $min_array[1] = array('Länk' => array('<a href="1.html">', 'Länk 1', '</a>'), 'Beskrivning'=>'abc')
> 
> $min_array[2] = array('Länk' => array('<a href="2.html">', 'Länk 2', '</a>'), 'Beskrivning'=>'def')
> ```
>
>  
> Nu vill jag kunna sortera arrayen på önskad "kolumn" (key).
> 
> Jag har tidigare använt mig av [usort](http://se2.php.net/manual/sv/function.usort.php):
> 
>
>
> ```php
> function sortera_array($a, $b) {
> 
>     global $ordning;
> 
>     return strcmp($a[$ordning], $b[$ordning]);
>     
> }
> 
> usort($min_array, "sortera_array");
> ```
>
> 
> Där **$ordning** innehåller det jag vill sortera på. Denna funktion fungerar inte när jag vill sortera på Länk ("Länk 1" eller "Länk 2").
> 
> Hur ska jag modifiera min funktion för att den ska fungera i alla lägen?
> 
> Tack på förhand!  :bire

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

## #13 — spango, 2008-05-13T07:37Z

Jag citerar mig själv i den gamla tråden:

> **Jag skrev:**
>
> Du får hitta på nåt fiffigt sätt att se till du jämför $a\["Namn"\]\[1\] med $b\["Namn"\]\[1\].

Svårare än så är det inte. Vad är problemet?

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

## #14 — dreas, 2008-05-13T09:21Z

Funktionen i sig ska det ju inte vara några problem med, men precis som bl.a. Spango säger är det nog $ordning som är boven i dramat. Är du säker på att $ordning innehåller korrekt namn? Prova att skriva in array fältet, typ som spango skrev med $a\["Namn"\], för hand och se ifall du får bättre resultat.

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

## #15 — SPiN, 2008-05-13T09:31Z

Jag förstår inte vilket fält du vill ordna på, men om du vill t.ex. sortera på texten som ska vara mellan a-taggarna (\<a\> och \</a\>), dvs. index \["Länk"\]\[1\], så fungerar följande:

```php
<?php
function mySort($a, $b) {
	return strcmp($a["Länk"][1], $b["Länk"][1]);
}

$myArray[0] = array("Länk" => array('<a href="link1.html">', 'Länk 1', '</a>'), "Beskrivning" => 'LÄNK1');
$myArray[1] = array("Länk" => array('<a href="link3.html">', 'Länk 3', '</a>'), "Beskrivning" => 'LÄNK3');
$myArray[2] = array("Länk" => array('<a href="link2.html">', 'Länk 2', '</a>'), "Beskrivning" => 'LÄNK2');

usort($myArray, "mySort");

print_r($myArray);
```

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

---

Tråden på webben: https://www.webforum.nu/amne/php/171161-sortera-flerdimensionell-array
