Avatar billede zeexter Nybegynder
24. januar 2003 - 16:03 Der er 10 kommentarer og
1 løsning

Sortering af multi-array

Er der en der kan fortælle mig hvor dan jeg kan sortere første array så det vises so i andet array, jeg kan ikke rigtign finde én funktion der kan dette

--------------------------------------------

Array
(
    [0] => Array
        (
            [name] => Actauren
            [ranknum] => 5
        )

    [1] => Array
        (
            [name] => Anglefire
            [ranknum] => 2
        )

    [2] => Array
        (
            [name] => Angleice
            [ranknum] => 5
        )
}
--------------------------------------------
Array
(
    [0] => Array
        (
            [name] => Anglefire
            [ranknum] => 2
        )
    [1] => Array
        (
            [name] => Angleice
            [ranknum] => 3
        )
    [2] => Array
        (
            [name] => Actauren
            [ranknum] => 5
        )
}
--------------------------------------------
Avatar billede zeexter Nybegynder
24. januar 2003 - 16:04 #1
"[ranknum] => 5" i første array skulle ha været "[ranknum] => 3"
Avatar billede barlach Nybegynder
24. januar 2003 - 16:17 #2
ca sådan her?


$players[0] = Array ('name' => 'Actauren','ranknum' => 3  );

    $players[1] = Array    (        'name' => 'Anglefire',        'ranknum' => 2  );

    $players[2] = Array      (        'name' => 'Angleice',    'ranknum' => 5    );


function cmp ($a, $b) {
    return strcmp($a["ranknum"], $b["ranknum"]);
}


usort($players, "cmp");

while (list ($key, $value) = each ($players)) {
    echo "\$players[$key]: " . $value["ranknum"] . "\n";
}
Avatar billede jakoba Nybegynder
24. januar 2003 - 16:18 #3
det kan du gøre med en 'usort' (Userdefineret SORTering)
    http://dk.php.net/manual/en/function.usort.php
fx:

<?php

function sammenlign2SubArrays( $a, $b ) {
    if ( $a['ranknum'] > $b['ranknum'] ) return 1;  // $a er størst
    if ( $a['ranknum'] == $b['ranknum'] ) return 0;  // de er ens
    return -1;
}

var_dump( $ditStoreArray );

sort( $ditStoreArray, "sammenlign2SubArrays" );

var_dump( $ditStoreArray );

?>
Avatar billede jakoba Nybegynder
24. januar 2003 - 16:19 #4
barlach >> hvorfor strcmp(...), værdien i ranknum er et tal ?
Avatar billede Slettet bruger
24. januar 2003 - 16:20 #5
This should do it!
foreach($array as $value)
{
    $array2 = $value["ranknum"];
}
array_multisort($array, $array2);
$array er nu sorteret efter rækkefølgen i $array2...
http://www.php.net/manual/en/function.array-multisort.php
Avatar billede barlach Nybegynder
24. januar 2003 - 16:21 #6
jakoba>> har egentlig ikke kigget nærmere på det... tog bare usort eksemplet fra manualen
Avatar billede barlach Nybegynder
24. januar 2003 - 16:24 #7
eehhh...jeg har forstået det sådan at han vil sortere det første array så det ender som array 2??? og ikke sammenligne de 2?
Avatar billede barlach Nybegynder
24. januar 2003 - 16:25 #8
jakoba>> mener du ikke

usort( $ditStoreArray, "sammenlign2SubArrays" );
Avatar billede Slettet bruger
24. januar 2003 - 16:26 #9
barlach>>Hvem var det lige til?
Avatar billede jakoba Nybegynder
24. januar 2003 - 16:28 #10
det var til mig og han har helt ret. jeg glemte 'u'-et
Avatar billede barlach Nybegynder
24. januar 2003 - 16:29 #11
sorry, troede først at du sammenlignede de 2 arrays han skrev
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