php: gleiche Werte aus Array sammeln und zählen?
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
anzahl
array
code
dank
datum
dreh
ergebnis
gesuch
http
inhalt
manual
ordern
quelle
sinnvolles ergebnis
sortieren
sortierung
test
url
verschiedene werte ergebnis
vorkommen
-
Hallo
wie kann ich aus einem Array, das verschiedene "Werte" mehrfach enthält sortieren nach Anzahl
$data[0] = "aaa";
$data[1] = "aaa";
$data[2] = "bbbbbbbbb";
$data[3] = "ccccccc";
$data[4] = "ddddd";
$data[5] = "aaa";
$data[6] = "bbbbbbbbb";
$data[7] = "aaa";
$data[8] = "bbbbbbbbb";
$data[9] = "ccccccc";
... also so: aaa kommt 4 mal vor und bbbbbbbbb kommt 3 mal vor, usw.
insgesamt sind es "nur" 4 verschiedene Werte
$ergebnis[0] = array( "aaa" , "4" );
$ergebnis[1] = array( "bbbbbbbbb" , "3" );
$ergebnis[2] = array( "ccccccc" , "2" );
$ergebnis[3] = array( "ddddd" , "1" );
... oder ein ähnlich "sinnvolles" Ergebnis, (?)
das mir keine Werte mehr doppelt ausgibt, aber dafür die Angabe enthält,
wie oft das ursprüngliche Vorkommen / die Anzahl war ... ?
...
Beitrag zuletzt geändert: 16.4.2010 10:27:29 von freecontent -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Am schnellsten und einfachsten einfach über array_count_values()
-
Das geht ganz einfach mit array_count_values() -> http://www.php.net/manual/de/function.array-count-values.php
Danach erhälst Du ein Array, welches die gefundenen Werte als Key enthält und die Häufigkeit als Wert. Also
Array ( ['aaa'] => 4 ['bbbbbbbb'] = 3
Um das in das von Dir vorgeschlagene Format umzusortieren könntest Du dann noch sowas machen.
$temp = array_count_values($data); foreach ($temp as $key => $value) { $ergebnis[] = array($key, $value); }
-
yieeee-haaa, danke
genau was ich gesuch habe ... jetzt fehlt nur noch die Sortierung nach Häufigkeit (Anzahl / Vorkommen)
mit einem einfachen sort($ergebnis); bekomme ich das Array nach Wert alphabetisch
also dehe die rteihenfolge einfach um: $ergebnis[] = array($value, $key);
ok, klappt, sortiert nach Anzahl, aber aufsteigend ...
.. wie dreh ich das nochmal um .. absteigend ... mit meister Anzahl oben ?!
:)
edit: ok .... mit array_reverse() .. aber das geht doch auch anders ... ASC/DESC oder so?
Beitrag zuletzt geändert: 16.4.2010 12:47:02 von freecontent -
freecontent schrieb:
edit: ok .... mit array_reverse() .. aber das geht doch auch anders ... ASC/DESC oder so?
Nein, verwechsel PHP (array_reverse) nicht mit SQL (ORDER BY field ASC/DESC) -
hallo freecontent,
auf http://www.php.net/manual/de/array.sorting.php findest du eine Auflistung der Sortier-Funktionen, die PHP mitbringt.
wäre das Gegenteil zu deinemrsort($ergebnis)
, d.h. es wird andersrum sortiert.sort($ergebnis)
gruß, djfun -
hallo
ok nochmal zur Sortierung .... bzw Array-Umschreibung
wie mache ich aus:
$daten[0] = array(6,"aaaa");
$daten[1] = array(4,"bbbb");
$daten[2] = array(3,"cccc");
$daten[3] = array(1,"dddd");
das:
$neu[0] = "aaaa";
$neu[1] = "bbbb";
$neu[2] = "cccc";
$neu[3] = "dddd";
... ohne eine neue Schleife ... ???!?
$temp = array_count_values($quelle); foreach ($temp as $key => $value) { $daten[] = array($value, $key); // ----- Anzahl und Inhalt $test[] = array($key); // ---- nur der Inhalt } rsort($daten); // ----- Sortierung nach Anzahl
...
--> und jetzt hier neues Array mit "nur" den Werten in der Sortierung (nach Anzahl)
oder ... das Array test genauso wie das Array daten sortieren .. ?!?!
Danke!
Beitrag zuletzt geändert: 17.4.2010 13:54:53 von freecontent -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage