[PHP] Tweedimensionale array sorteren op één dimensie

Pagina: 1
Acties:
  • 127 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

  • ericck
  • Registratie: Augustus 2001
  • Laatst online: 20-09 23:15
Het sorteren van een array die ik heb gemaakt lukt niet. De array moet op score worden gesorteerd. Dit is wat ik nu heb:

PHP:
1
2
3
4
5
6
Array (
[0] => Array ( [nummer] => 16 [score] => 0 )
[1] => Array ( [nummer] => 15 [score] => 1.5 )
[2] => Array ( [nummer] => 14 [score] => 2 )
[3] => Array ( [nummer] => 13 [score] => 1 )
)


en wat ik dus als output zou willen hebben na het sorteren is:

PHP:
1
2
3
4
5
6
Array (
[0] => Array ( [nummer] => 14 [score] => 2 )
[1] => Array ( [nummer] => 15 [score] => 1.5 )
[2] => Array ( [nummer] => 13 [score] => 1 )
[3] => Array ( [nummer] => 16 [score] => 0 )
)


Ik heb het geprobeerd met asort, ksort, array_multisort. Maar volgens mij is het niet mogelijk zonder een stukje extra coding (of gebruik ik de functies op de verkeerde manier?).

Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 18-09 16:28

Bosmonster

*zucht*

usort, en dan zelf een comparison functietje schrijven.

http://nl2.php.net/manual/en/function.usort.php

Acties:
  • 0 Henk 'm!

  • DataGhost
  • Registratie: Augustus 2003
  • Laatst online: 19-09 21:26

DataGhost

iPL dev

http://nl2.php.net/manual/en/function.usort.php

edit: oeps ik bedoelde natuurlijk usort
en me (*&@#$ internet werkte ff niet mee enzo -_-

[ Voor 51% gewijzigd door DataGhost op 09-07-2004 15:45 ]


Acties:
  • 0 Henk 'm!

  • ericck
  • Registratie: Augustus 2001
  • Laatst online: 20-09 23:15
Volgens mij is het nu gelukt.
Ik weet niet of de code erg neat is zo, maar hij werkt wel.

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
function cmp($a, $b)
{
   if ($a["score"] == $b["score"]) {
       return 0;
   }
   return ($a["score"] > $b["score"]) ? -1 : 1;
}

#sorteren
usort($ladenkast, "cmp");
#bekijken
while (list($key, $value) = each($ladenkast)) {
   echo "\$ladenkast[$key]: " . $value["score"] . "\n";
}

[ Voor 16% gewijzigd door ericck op 09-07-2004 16:02 ]