[php] Array Sorteren *

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Erpenator2
  • Registratie: Augustus 2003
  • Laatst online: 16-09 14:21
Hoi

Ik ben bezig met een quiz, en wil aan het einde de resultaten optellen. Alle resultaten komen in een array en daarin wil ik tellen hoevaak de verschillende types (a tm f) voorkomen. Deze wil ik dan afdrukken op volgorde van de meeste score naar de laagste score. Het lukt me wel alle waardes te tellen maar niet om ze te sorteren.


Op dit moment sorteert hij op de volgorde waarop de letters in de array staan ( zie eerst de b, daarna de c daarna de d etc)
Ik wil niet op de volgorde van de letters sorteren maar op het aantal

Type = b Aantal = 4
Type = c Aantal = 2
Type = d Aantal = 4
Type = a Aantal = 1
Type = f Aantal = 1
Type = g Aantal = 1

Voorbeeld.
Type b aantal 4
Type d aantal 3
Type f aantal 1

etc

Wie kan mij verder helpen?
PHP:
1
2
3
4
5
6
7
8
9
10
11
 
<?
$type = array('b','b','c','d','d','d','b','d','a','b','c','f','g');
$i=0;
uasort($type,SORT_NUMERIC);
foreach (array_count_values ($type) as $type=>$count)
{
 echo "Type = ".$type." Aantal = ".$count."<BR>\n ";

}
?>

[ Voor 44% gewijzigd door Erpenator2 op 15-08-2003 09:11 ]


Acties:
  • 0 Henk 'm!

  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 12:56
Je moet je opzet iets veranderen denk ik:
In de foreach zet je de resultaten, dus type en count in een nieuwe array, bijvoorbeeld $results[]

Dan doe je dus steeds in die foreach $results[$type]=$count;

Na de loop sorteer je die array en kun je die loopen.

Ik neem aan dat het PHP is?
Zet je code dan even tussen [p h p ] en [ / p h p ] zonder spaties.

[ Voor 17% gewijzigd door djluc op 15-08-2003 09:02 ]


Acties:
  • 0 Henk 'm!

  • justmental
  • Registratie: April 2000
  • Niet online

justmental

my heart, the beat

P&W FAQ - De "quickstart"
Wat doet de code nu?

Who is John Galt?


Acties:
  • 0 Henk 'm!

  • Erpenator2
  • Registratie: Augustus 2003
  • Laatst online: 16-09 14:21
djluc, bedankt voor je snelle antwoord! Ik heb het bericht aangepast. (sorry eerste post)
Om terug te komen op het probleem

De onderstaande code geeft als outpout
Array
(
[0] => 1
[1] => 1
[2] => 1
[3] => 2
[4] => 4
[5] => 4
)


Nu ben ik mijn type kwijt de outpout zou deze ook moeten bevatten.


PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?
$type = array('b','b','c','d','d','d','b','d','a','b','c','f','g');
//$type = array('type' => 'b','type' => 'b','type'=> 'b');
$i=0;

uasort($type,SORT_NUMERIC);

foreach (array_count_values ($type) as $type=>$count)
{
 echo "Type = ".$type." Aantal = ".$count."<BR>\n ";
 $results[$type]=$count;
}
sort($results);
print "<pre>";
print_r($results);
print "</pre>";
?>

[ Voor 64% gewijzigd door Erpenator2 op 15-08-2003 09:29 ]


Acties:
  • 0 Henk 'm!

  • Macros
  • Registratie: Februari 2000
  • Laatst online: 15-05 16:29

Macros

I'm watching...

PHP:
1
2
3
4
5
6
7
8
9
10
$type = array('b','b','c','d','d','d','b','d','a','b','c','f','g'); 
$result = array_count_values ($type);

arsort($result);

foreach ($result as $type=>$count) 
{ 
    echo "Type = ".$type." Aantal = ".$count."<BR>\n "; 
} 
print_r($result);


Eerst de aantallen van de waarden in de $type array tellen.
Dan reverse sorteren op de waarden terwijl de keys worden bewaard (arsort).
Dan tonen in je foreach (niets mee doen), of even met de print_r.

"Beauty is the ultimate defence against complexity." David Gelernter


Acties:
  • 0 Henk 'm!

  • Erpenator2
  • Registratie: Augustus 2003
  • Laatst online: 16-09 14:21
Hartelijk bedankt Macros!!
Dit is het volgens mij!
Weer wat geleerd vandaag!!!!

Nogmaals bedankt!
Pagina: 1