Array Inhalt nach vorkommen sortiert ausgeben

son gohan

Erfahrenes Mitglied
Hi, ich hab ein Array mit vielen doppelten Wörtern, und zwar Suchwörter von meiner Suchfunktion.

Die Suchwörter werden in eine .txt Datei geschrieben, mit | getrennt, mit file_get_contents() und explod() wieder bearbeitet und in ein array umgewandelt, das war alles kein Problem bis hier hin.

Jetzt will ich das Array mit den Suchwörter von einer for() Schleife ausgeben lassen, aber so geordnet das die Wörter die am meisten drine stehen als erstes kommen, wie kann ich das Array dementsprechend sortieren lassen?

Das PHP Manuel sagt mir das ich mit der Funktion array_count_values() schon mal was machen muss, ich komm nur noch nicht dahinter wie genau?
 
Zuletzt bearbeitet:
Zum Beispiel so:

PHP:
<?PHP
    $array = array('WORT1','WORT1','WORT1','WORT2','WORT2','WORT3','WORT3','WORT3','WORT3');
    $zaehle = array_count_values($array);
    arsort($zaehle);

    
    echo '<pre>';
    print_r($zaehle);
    echo '</pre>';
?>
 
Und wie kann ich jetzt jeweils nur die ersten 3 Datensätze des Array ausgeben, wenn ich eine foreach Schleife nehme werden komplett alles datensätze des Arrays ausgegeben und eine andere Möglichkeit fällt mir nicht ein ?

PHP:
foreach($aa as $k => $v) {
    echo "$k => $v"."<br>";
}
 
Hallo son gohan,

damit nur die ersten 3 Elemente ausgegeben werden, könntest du das ganze so gestalten
PHP:
$i = 0;
foreach($aa as $k => $v) {
    echo $k .' => '. $v .'<br />';
    $i++;
    if($i == 3) {
        break;
    }
}

Das break veranlasst die Schleife aufzuhören bzw. springt einfach aus der Schleife raus
 
Hi, da bin ich wieder ich hab ein neues Problem.

Diesmal will ich eine Art Livesuche anbieten, wo die zuletzt gesuchten Wörter angezeigt werde.

Dazu habe ich wieder alle Suchwörter in eine .txt Datei geschrieben und in ein Array geladen, die zuletzt eingegebenen Suchwörter stehen immer an letzter Stelle des Arrays.

So, nun will ich einfach der Reihe nach ca. 10 Suchwörter mit ner Schleife ausgeben, die als letztes gesucht wurden, also die Suchwörter die am Ende des Array stehen.

Mein Problem hierbar zurzeit ist, ich bekomme das Array nicht so sortiert, dass die letzteren Datensätze nach vorne kommen, ohne das alphabetisch oder sonst wie sortiert wird!

Falls jemand mir aber komplett eine besser Lösung nennen kann um das ganze zu erreichen ohne eine datenbank benutzen zu müsse, wäre das auch ganz toll.
 
Zuletzt bearbeitet:
Hallo son gohan,

was du wahrscheinlich suchst ist [phpf]array_reverse[/phpf], damit erhälst du (wie der Name schon sagt) die Elemente in umgekehrter Reihenfolge, d.h. die letzten Elemente stehen an erster Stelle und umgekehrt.

Wenn du das gemacht hast, kannst du wie ich oben schon geschrieben habe, die ersten 10 Elemente ausgeben, also so:
PHP:
$i = 0;
foreach($aa as $k => $v) {
    echo $k .' => '. $v .'<br />';
    $i++;
    if($i == 10) {
        break;
    }
}

Gruß

Devil
 
Zurück