23. februar 2005 - 13:08
Der er
11 kommentarer og 1 løsning
Multi arrays
Nu gider jeg ikke rode med det mere, så nu kommer der bare et spørgsmål. Hvordan henter jeg disse 3 variabler ud igen fra mit array? array(1) { [1]=> array(3) { ["hits"]=> string(1) "0" ["date"]=> string(47) "Tirsdag den 1. februar 2005" ["procent"]=> string(2) "0%" } } Og hvordan kan jeg sortere variablerne efter hits når der er flere? Jeg har forsøgt mig lidt med: array_multisort($hits, SORT_DESC, $date, $procent); Men jeg fatter det ikke helt.
Annonceindlæg fra SuperOffice
23. februar 2005 - 13:10
#1
Du hiver d.eks. date ud med $array[1]['date']... Du skal bruge usort() til at sortere med.
23. februar 2005 - 13:25
#2
Hvis du vil sortere på hits, kan det gøres sådan: function cmp($a, $b) { if ($a == $b) { return 0; } return ($a < $b) ? -1 : 1; } usort($array, "cmp");
23. februar 2005 - 13:27
#3
Jeg tror detox mener: function cmp($a, $b) { if ($a['hits'] == $b['hits']) { return 0; } return ($a['hits'] < $b['hits']) ? -1 : 1; } usort($array, "cmp"); :)
23. februar 2005 - 13:32
#4
coderdk -> Næ, jeg mente faktisk det jeg skrev, da 'hits' er index 0 bliver den jo valgt automatisk :O)
23. februar 2005 - 13:33
#5
Perfekt, så virker det.
23. februar 2005 - 13:36
#6
detox, nej det er jo et multidimensionelt array $array[index][hits] :)
23. februar 2005 - 13:45
#7
Javel ja, men den sorterer nu ikke desto mindre efter 'hits' i mit eksempel. Men det bliver selvfølgelig tydeliggjort med dit eksempel.
23. februar 2005 - 13:47
#8
Her er beviset: <pre> <?php $arr = array(1=>array('hits'=>54, 'date'=>'12-12-2004', 'procent'=>1), 2=>array('hits'=>36, 'date'=>'12-12-2004', 'procent'=>4), 3=>array('hits'=>61, 'date'=>'12-12-2004', 'procent'=>3), 4=>array('hits'=>6, 'date'=>'12-12-2004', 'procent'=>2)); function cmp($a, $b) { if ($a == $b) { return 0; } return ($a < $b) ? -1 : 1; } usort($arr, "cmp"); print_r($arr); ?> </pre>
23. februar 2005 - 13:50
#9
Jeg tror det er et tilfælde - Du sammenligner to værdien af to arrays, og ikke 'hits': $array1 = array( "a", "b", "c" ); $array2 = array( "b", "c", "d" ); echo ( $array1 < $array2 ? "mindre" : "større" ); og: $array1 = array( "a", "b", "c", "d" ); $array2 = array( "b", "c", "d" ); echo ( $array1 < $array2 ? "mindre" : "større" ); :)
23. februar 2005 - 13:58
#11
Ja, netop, der bruger de også nøglen ;) <?php function cmp($a, $b) { return strcmp($a["fruit"], $b["fruit"]); } $fruits[0]["fruit"] = "lemons"; $fruits[1]["fruit"] = "apples"; $fruits[2]["fruit"] = "grapes"; usort($fruits, "cmp"); while (list($key, $value) = each($fruits)) { echo "\$fruits[$key]: " . $value["fruit"] . "\n"; } ?>
23. februar 2005 - 14:02
#12
Ja, det gør de sørme osse ;O) Skægt nok at det virker uden, men nu vil jeg osse bruge nøglen for en ordens skyld :O)
Vi tilbyder markedets bedste kurser inden for webudvikling