php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Zahlen in einem Array nicht doppelt auflisten und zählen


 
struggler
27-11-2006, 22:07 
 
Guten Abend zusammen,

ich habe vor ein paar Tagen mit PHP angefangen und komme auch recht gut vorran.

Nun möchte ich einen kleinen Script für Statistik erstellen, stosse jedoch auf Probleme.

UM mein Anliegen zu verdeutlih habe ich ein paar Screens geschossen:
Das ist das Forumlar in den ich eine Reihe von Zahlen eingebe, die jewils mit einem Leerzeichen getrennt sind.
http://img72.imageshack.us/img72/282/screen1yl3.gif

Per explode ($pieces = explode(" ", $urliste);) werden die Zahlen nun ein ein Array gepackt und geteilt. Danach ordne ich den Array noch mit Hilfe von natsort an und gebe ihn dann geordnet aus. Das klappt auch wunderbar.

So weit so gut, jetzt kommen wir zu meinem Problem:

nun müsste ich eine Tabelle ausgeben in der einmal jede Zahl des Arrays aufgelistet wird. Allerdings darf jede Zahl nur einmal vorkommen, egal ob sie nun mehrmals im Array vorkommt oder nicht.

Des weiteren sollte die Häufigkeit der Zahlen auch ausgegeben werden.

EIn kleines Beispiel :

Die Zahlen : 1 3 4 3 5 5 3

Einmal soll : 1 3 4 5

ausgegeben werden und dann noch die Häufigkeiten der jeweiligen Zahlen, also :

1x1 (kommt 1 mal vor)
3x3 (kommt 3 mal vor)
1x4 (kommt 1 mal vor)
2x5 (kommt 2 mal vor)


Danke :)

EDIT: Habe soeben in der suche den Befhel "array_unique" gefunden, kann ihn jedoch nicht richtig anweden.

 
TobiaZ
27-11-2006, 22:21 
 
woran scheiterst du beim anwenden von array_unique. lass dir bitte nicht alles aus der nase ziehen.

vielleicht machst du es aber auch einfach so.

foreach(dein array as v)
if(!isset($counter[v]))
$counter[$v] = 1;
else
$counter[$v]++;

und dann nur noch das counter-array ausgeben.

 
Kropff
27-11-2006, 22:23 
 
schau die mal das (http://www.php-resource.de/forum/showthread.php?threadid=78393&highlight=poker) an.

gruß
peter

 
jahlives
27-11-2006, 22:23 
 
$daten = array(1,2,3,4,4,4,2,3);
$out = array();
foreach($daten as $wert){
if(array_key_exists($wert,$out)){
$out[$wert] += 1;
}else{
$out[$wert] = 1;
}
}

Sollte dir ein Array geben mit den Zahlen als Key und der Anzahl als jeweiliges Element zu $key.

Gruss

tobi

 
struggler
27-11-2006, 22:24 
 
Sry, wenn ich mich etwas vage ausgedrückt habe ;)

Das Problem mit array_unique konnte ich soeben selber beheben, dann bleibt jetzt nur noch die Frage der Häufigkeiten stehen :)

Dennoch Danke für die Antwort !

Edit: jahlives ich schaue mal ob ich das in meinen Qullcode einbauen kann, wenn nicht melde ich mich nochmal.

 
struggler
27-11-2006, 22:39 
 
Leute ihr seid die Besten !

Ich hätte nicht gedacht, dass ich zum einen sooo schnell eine, geschweige den mehrere Antworten bekomme.


Ich danke euch vielmals, es funzt genauso wie es soll.

Kann aber sein , dass ich euch schon bald mit neuen Fragen zuballern werde.

Nochmal Danke :D

Edit: Sry für den Doppelpost, aber das musste raus :p


Alle Zeitangaben in WEZ +2. Es ist jetzt 01:10 Uhr.