W3docs

Die PHP-Funktion "array_count_values" verstehen

Die Funktion array_count_values in PHP zählt, wie oft jeder Wert in einem array vorkommt, und gibt ein assoziatives array zurück.

Die PHP-Funktion array_count_values() zählt, wie oft jeder Wert in einem array vorkommt. Sie gibt ein neues assoziatives array zurück, bei dem die Schlüssel die eindeutigen Werte aus dem Eingabe-array und die Werte deren Häufigkeit sind. Dies ist der schnellste Weg, eine Häufigkeitstabelle (ein Histogramm der Werte) zu erstellen, ohne selbst eine Schleife schreiben zu müssen.

Dieses Kapitel behandelt die Syntax, die Regeln dazu, welche Werte gezählt werden können, häufige Fallstricke sowie praktische Rezepte wie das Finden des häufigsten Elements.

Syntax

array_count_values(array $array): array
ParameterBeschreibung
$arrayDas Eingabe-array, dessen Werte Sie zählen möchten. Nur int- und string-Werte werden gezählt.

Die Funktion gibt ein assoziatives array mit Wert => Anzahl-Paaren zurück. Sie verändert das ursprüngliche array nicht.

Einfaches Beispiel

Übergeben Sie ein array mit Werten, und Sie erhalten jeden eindeutigen Wert zusammen mit seiner Anzahl zurück:

php— editable, runs on the server

Ausgabe:

Array
(
    [red] => 2
    [green] => 1
    [blue] => 2
    [yellow] => 1
)

"red" und "blue" erscheinen jeweils zweimal, während "green" und "yellow" jeweils einmal vorkommen. Die ursprünglichen array-Schlüssel werden vollständig ignoriert — nur die Werte sind relevant.

Wechselwirkung zwischen Integer- und String-Schlüsseln

Da PHP-array-Schlüssel nur Ganzzahlen oder Strings sein können, zählt array_count_values() ausschließlich int- und string-Werte. Es gibt eine subtile Konsequenz: Ein numerischer string wie "1" und die Ganzzahl 1 werden als derselbe Schlüssel behandelt und daher zusammen gezählt.

<?php

$mixed = array(1, "1", 1, "hello", "hello");
print_r(array_count_values($mixed));

?>

Ausgabe:

Array
(
    [1] => 3
    [hello] => 2
)

Die Ganzzahl 1 und der string "1" werden zu einem einzigen Schlüssel 1 mit der Anzahl 3 zusammengefasst. Dies entspricht dem Verhalten von PHP bei der Normalisierung von array-Schlüsseln überall.

Werte, die nicht gezählt werden können

Jeder Wert, der kein int oder string ist — null, boolean, Fließkommazahlen, arrays oder objects — kann nicht als Schlüssel verwendet werden. PHP überspringt ihn und gibt eine Warnung aus, anstatt ihn zu zählen:

<?php

$values = array("a", "b", null, 3.5, "a");
print_r(@array_count_values($values));

?>

Ausgabe:

Array
(
    [a] => 2
    [b] => 1
)

Nur die string-Werte werden gezählt; null und die Fließkommazahl 3.5 werden verworfen (der echte Aufruf gibt "Can only count string and integer values"-Warnungen aus — das @ oben dient nur dazu, die Ausgabe für die Demo sauber zu halten). Wandeln Sie Ihre Daten zuerst um oder filtern Sie sie, wenn Sie andere Typen zählen müssen.

Praktisches Rezept: Den häufigsten Wert finden

Eine Häufigkeitstabelle macht es einfach, den Modalwert (das häufigste Element) zu finden. Sortieren Sie die Anzahlen in absteigender Reihenfolge und lesen Sie den ersten Schlüssel:

<?php

$votes = array("yes", "no", "yes", "yes", "no", "maybe");
$counts = array_count_values($votes);
arsort($counts);            // sort by count, highest first, keeping keys
$winner = array_key_first($counts);

echo "Winner: $winner ({$counts[$winner]} votes)";

?>

Ausgabe:

Winner: yes (3 votes)

Sie können das Ergebnis auch direkt an array_sum() übergeben, um die Gesamtsumme zu überprüfen, oder an max(), um die höchste Anzahl zu ermitteln.

Wörter in einem string zählen

Ein häufiger Anwendungsfall ist das Erstellen einer Worthäufigkeitskarte. Teilen Sie den string mit explode() in Wörter auf und zählen Sie dann:

<?php

$text = "the cat sat on the mat the cat ran";
$words = explode(" ", $text);
print_r(array_count_values($words));

?>

Ausgabe:

Array
(
    [the] => 3
    [cat] => 2
    [sat] => 1
    [on] => 1
    [mat] => 1
    [ran] => 1
)

Wann sollte es verwendet werden?

Verwenden Sie array_count_values(), wenn Sie ein Histogramm der Werte benötigen: beim Zählen von Stimmen, beim Finden von Duplikaten, beim Erstellen von Tag-Clouds oder beim Erkennen der häufigsten/seltensten Einträge. Es ist schneller und klarer als eine manuelle foreach-Schleife mit isset()-Prüfungen und beseitigt eine häufige Quelle von Off-by-one-Fehlern.

Verwandte Funktionen

  • array_unique() — doppelte Werte entfernen (wenn Sie nur wissen möchten, welche Werte existieren, nicht wie oft).
  • array_keys() — nur die eindeutigen Werte extrahieren, sobald sie Schlüssel sind.
  • array_sum() — die Anzahlen summieren.
  • arsort() — die resultierende Häufigkeitstabelle nach Anzahl sortieren.

Übungen

Übung
Was ist die Funktion von array_count_values() in PHP?
Was ist die Funktion von array_count_values() in PHP?
Was this page helpful?