Avatar billede eikhorsholm Nybegynder
23. juli 2008 - 09:33 Der er 3 kommentarer

Sorter multi-dimensionelt array.

Jeg har et array af følgende form:
Array(
  Array ( ting1, ting2, ting3 ),
  Array ( ting1, ting2, ting3 ),
  Array ( ting1, ting2, ting3 ),
  Array ( ting1, ting2, ting3 )...
)

Er det muligt, at sorter det første array efter de indre array, således at der først sorteres efter ting1 og så ting2?

Har prøvet, at se på array_multisort, men synes ikke jeg kan bruge den?
Avatar billede jakobdo Ekspert
23. juli 2008 - 09:51 #1
Hvis vi siger:
Array(
  Array ( ting1, ting2, ting3 ),
  Array ( ting1, ting2, ting3 ),
  Array ( ting1, ting2, ting3 ),
  Array ( ting1, ting2, ting3 )...
)

Hvordan skal det se ud efter en sortering ?
Avatar billede eikhorsholm Nybegynder
23. juli 2008 - 10:01 #2
Hvis det f.eks. er:
Array(
  Array ( 2, 3, 1 ),
  Array ( 4, 2, 2 ),
  Array ( 4, 2, 1 ),
  Array ( 4, 1, 1 )...
)

Så skal det se således ud:

Array(
  Array ( 2, 3, 1 ),
  Array ( 4, 1, 1 ),
  Array ( 4, 2, 1 ),
  Array ( 4, 2, 2 )...
)
Avatar billede jakobdo Ekspert
23. juli 2008 - 10:55 #3
Jeg tror du kan bruge dette eksempel:

<?php
//http://www.eksperten.dk/spm/839213
$data = array(
  array(2,3,1),
  array(4,2,2),
  array(4,2,1),
  array(4,1,1),
  array(1,3,5),
  array(7,2,1),
  array(7,2,3),
  array(1,1,1),
  array(1,1,2)
);

function cmp($a, $b){
    if ($a == $b) {
        return 0;
    }
    return ($a < $b) ? -1 : 1;
}

echo '<pre>';
print_r($data);
echo '</pre>';

echo '<hr />';

usort($data,'cmp');

echo '<pre>';
print_r($data);
echo '</pre>';

?>
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester