Avatar billede dallan2007 Nybegynder
21. februar 2013 - 14:50 Der er 4 kommentarer og
1 løsning

Sortering af et dobbelt array?

Hvis du har et array fordelt på denne måde:

Produkt[0][0] = "Æbler"
Produkt[0][1] = "10"

Produkt[1][0] = "Pærer"
Produkt[1][1] = "7"

Produkt[2][0] = "Æbler"
Produkt[2][1] = "5"

Produkt[3][0] = "Gulerødder"
Produkt[3][1] = "887"

Produkt[4][0] = "Agurk"
Produkt[4][1] = "3"

Produkt[5][0] = "Agurk"
Produkt[5][1] = "117"

Hvordan får man det så lettest omlavet til:

Opdateret[0][0] = "Æbler"
Opdateret[0][1] = "15"

Opdateret[1][0] = "Pærer"
Opdateret[1][1] = "7"

Opdateret[2][0] = "Gulerødder"
Opdateret[2][1] = "887"

Opdateret[3][0] = "Agurk"
Opdateret[3][1] = "120"

Altså hvordan sortere man antal ud fra navn og smider dem i et nyt array?
Avatar billede olebole Juniormester
21. februar 2013 - 16:04 #1
<ole>

Forudsat, dit array hedder $arr:

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

usort($arr, "cmp");

/mvh
</bole>
Avatar billede arne_v Ekspert
22. februar 2013 - 04:39 #2
Baseret paa eksempel data tror jeg faktisk ikke at det er en sortering der er brug for men snarere:


<?php
$product = array(array(), array(), array(), array(), array());
$product[0][0] = "Æbler";
$product[0][1] = "10";

$product[1][0] = "Pærer";
$product[1][1] = "7";

$product[2][0] = "Æbler";
$product[2][1] = "5";

$product[3][0] = "Gulerødder";
$product[3][1] = "887";

$product[4][0] = "Agurk";
$product[4][1] = "3";

$product[5][0] = "Agurk";
$product[5][1] = "117";

foreach($product as $p) {
    echo $p[0] . ' ' . $p[1] . "\r\n";
}

$map = array();
$aggr = array();
foreach($product as $p) {
    if(array_key_exists($p[0], $map)) {
        $aggr[$map[$p[0]]][1] += $p[1];
       
    } else {
        $map[$p[0]] = count($aggr);
        $aggr[] = $p;
    }
}

foreach($aggr as $p) {
    echo $p[0] . ' ' . $p[1] . "\r\n";
}
?>
Avatar billede dallan2007 Nybegynder
22. februar 2013 - 09:34 #3
Mange takker begge 2 - arne_v det er helt perfekt, smid et svar ^^
Avatar billede arne_v Ekspert
22. februar 2013 - 14:35 #4
svar
Avatar billede arne_v Ekspert
22. februar 2013 - 14:36 #5
Jeg ville nok bruge en anden data struktur, men ...
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