---
title: "Sortera array"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/94304-sortera-array"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "Skarre"
published: "2004-01-09T08:25:22.000Z"
updated: "2004-01-10T12:05:43.000Z"
replies: 4
views: 370
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/94304-sortera-array"
---

# Sortera array

## #1 — Skarre, 2004-01-09T08:25Z

Jag har en tvådimensionell matris innehållande basketlag i den första dimensionen och information om deras resultat i den andra. Jag försöker sortera dessa efter en eller flera nycklar, t.ex. efter poäng, sedan målskillnad och sedan målfaktor för att få fram en resultattabell.

Ett index i den första dimensionen (ett lag) har följande nycklar:

```php
$teams[$i]['name']
$teams[$i]['played']
$teams[$i]['won']
$teams[$i]['lost']
$teams[$i]['points_made']
$teams[$i]['points_given']
$teams[$i]['difference']
$teams[$i]['points']
$teams[$i]['point_factor']
```

Jag har lyckats sortera efter en nyckel i taget enligt nedan, men är osäker på hur jag sorterar efter flera nycklar.

```php
function cmp ($a, $b) {
	return $a['points'] < $b['points'];
}
usort($teams,'cmp');
```

Tack på förhand!

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

## #2 — Asterix, 2004-01-09T08:40Z

Så här kanske:

```php
function cmp ($a, $b)
{
  if ($a['points'] == $b['points'])
  {
    if ($a['difference'] == $b['difference'])
    {
      return $a['point_factor'] < $b['point_factor'];
    }
    return $a['difference'] < $b['difference'];
  }
  return $a['points'] < $b['points'];
}
```

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

## #3 — Skarre, 2004-01-09T10:30Z

Det verkar fungera utmärkt! Tack ska du ha! :)

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

## #4 — Asterix, 2004-01-09T12:24Z

Såg att du frågade om inbördesmöten så jag testar om jag får in det också. Inget är testat men i teorin bör det funka :)

```php
function cmp ($a, $b)
{
  global $match;
  if ($a['points'] == $b['points'])
  {
    if ($a['difference'] == $b['difference'])
    {
      if ($a['point_factor'] == $b['point_factor'])
      {
        foreach ($match[$a['name']][$b['name']] as $value)
        {
          if ($value[0] > $value[1])
          {
            $a_point += 3;
          }
          elseif ($value[1] > $value[0])
          {
            $b_point += 3;
          }
          else
          {
            $a_point += 1;
            $b_point += 1;
          }
        }
        foreach ($match[$b['name']][$a['name']] as $value)
        {
          if ($value[0] > $value[1])
          {
            $b_point += 3;
          }
          elseif ($value[1] > $value[0])
          {
            $a_point += 3;
          }
          else
          {
            $a_point += 1;
            $b_point += 1;
          }
        }
        return $a_point < $b_point;
      }
        return $a['point_factor'] < $b['point_factor'];
    }
    return $a['difference'] < $b['difference'];
  }
  return $a['points'] < $b['points'];
}

$match['AIK']['DJURGÅRDEN'][] = array (1,0);
$match['AIK']['DJURGÅRDEN'][] = array (2,0);
$match['DJURGÅRDEN']['AIK'][] = array (7,0);
$match['DJURGÅRDEN']['AIK'][] = array (1,2);
```

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

## #5 — Skarre, 2004-01-10T12:05Z

Man tackar så mycket! Jag ska titta närmare på koden efter helgen.

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

---

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