---
title: "Array-sortering"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/14936-array-sortering"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "Web-Tor"
published: "2000-11-06T16:48:00.000Z"
updated: "2000-11-07T09:05:00.000Z"
replies: 6
views: 303
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/14936-array-sortering"
---

# Array-sortering

## #1 — Web-Tor, 2000-11-06T16:48Z

I en array har jag värden som består av tre bokstäver och tre siffror (t.ex. ABC123).

Hur gör jag om jag vill sortera dessa i nummerordning? Bokstäverna spelar alltså ingen roll men de måste ända ”finnas kvar”. Jag kan inte använda \<substr\> för att plocka bort bokstäverna eftersom jag i ett senare skede behöver alla sex tecken.

Kan man använda PHP:s fina sort-funktion på något sätt kanske?

/Tor

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

## #2 — stevenet, 2000-11-06T18:31Z

Varför inte kopiera arrayen och sedan rensa bort ABC? 
$kopia=$array\[0\];

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

## #3 — Web-Tor, 2000-11-07T08:16Z

Det är just det som inte går. Jag vill ha array:en i den här ordningen:

CCC111
BBB222
AAA333

Bokstäverna måste vara med men skall inte vara med i själva sorteringen.

Okey?
/Tor

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

## #4 — woodi, 2000-11-07T08:37Z

Web-Tor
Jag har ingen lösning så här på rak arm, men jag börjar bli nyfiken på vad Du håller på med!  :)

Ska se om jag kan klura ut någon lösning på detta!

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

## #5 — Swey, 2000-11-07T08:43Z

Två alternativ.
1\. Lägg värdet du vill sortera efter som nyckel.

$array\[111\] = "CCC111";
$array\[222\] = "BBB222";
$array\[333\] = "AAA333";

Använd alt. ksort för att sortera efter nyckeln och sedan foreach för att skriva ut den i rätt ordning.
 <http://se.php.net/manual/function.ksort.php> 

2\. Skapa en ny multiarray och lägg värdet du vill sortera efter på en plats och det du vill skriva ut på den andra.

$array\[\] = array(111, "CCC111");
$array\[\] = array(222, "BBB222");
$array\[\] = array(333, "AAA333");

Nu blir 0 sorteringsvärdet och 1 namnet.

För att sortera de använder du usort.

function mysort($a, $b) {
return ($a\[0\] \> $b\[0\]);
}
usort($array, mysort);
 <http://se.php.net/manual/function.usort.php> 

Anm. Du kan alltid byta ut AAA111 mot AAA och slå ihop dem när du skriver ut (i båda fallen).

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

## #6 — Robban, 2000-11-07T08:52Z

Man kan även använda befintlig array genom att använda usort på följande sätt (antar att arrayen heter $array):

```
<font size="1" face="Verdana, Arial, Helvetica, sans-serif">
function cmp ($a, $b) {
  return (substr($a,3) > substr($b,3)) ? 1 : -1;
}

usort ($array, cmp);
</font>
```

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

## #7 — Web-Tor, 2000-11-07T09:05Z

Nu när mitt problem är löst för den här gången passar jag på att tacka alla för hjälpen.

Robban - Du är min idol!

/Tor

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

---

Tråden på webben: https://www.webforum.nu/amne/php/14936-array-sortering
