Navigation
 Startseite
 Fachbücher
 Anzeigenmarkt
 Forum
 Webmaster News
 Script Newsletter
 Kontakt
 Script Installation
 Php
 Php Tutorials
 Webhoster Vergleich
 Impressum

Community-Bereich
 kostenlos Registrieren
 Anmelden
 Benutzerliste

Script Datenbank
 Script Archiv
 Script Top 20
 Screenshots
 Testberichte

Suche
 

Unsere Php Scripts
 Counter Script
 Umfrage Script
 Bilder Upload Script
 Terminverwaltung
 Simple PHP Forum
 RSS Grabber

Script Mods
 phpBB Adsense Mode

Tools und Generatoren
 .htpasswd Generator
 md5 Generator
 base64 Generator
 Markdown to HTML
 Colorpicker
 Unix timestamp Tool
 TLD Liste
 Webkatalog‑Verzeichnis

Partner
 Sprüche Treff

Artfiles.de
Bietet Serviceorientierte...
https://www.Artfiles.de
Hosterplus.de
Bekommen Sie Speicherplatz (Webspace), Domains...
https://www.Hosterplus.de
 
 
 

Werte eines Arrays zählen

Sie befinden sich: Home > Php Tutorial > Werte eines Arrays zählen

Werte eines Arrays zählen


Eintrag am:  13.01.2023
Hits / Besucher:  1524
Sprache:  Deutsch
Kategorie:  Einsteiger Tutorials
Tutorial Art:  eigenes
Eingetragen von   schubertmedia schubertmedia
 
Beschreibung

Die Funktion array_count_values() zählt, wie oft jeder Wert in einem Array vorkommt, und gibt das Ergebnis als assoziatives Array zurück. Das ist nützlich für Auswertungen, Tag-Clouds oder Übersichten, in denen du wissen willst, welche Einträge am häufigsten auftreten.

graph LR
    A["Eingabe-Array"] --> B["array_count_values()"]
    B --> C["Ergebnis-Array"]
    A -..- D["rot, blau, rot, grün, blau, rot"]
    C -..- E["rot=3, blau=2, grün=1"]

So funktioniert array_count_values()

Die Funktion nimmt ein Array entgegen und gibt ein neues Array zurück, in dem die Werte des Originals als Schlüssel dienen und die Häufigkeit als Wert.

<?php

$farben = ['rot', 'blau', 'rot', 'gruen', 'blau', 'rot'];
$zaehlung = array_count_values($farben);

print_r($zaehlung);
/*
* Array (
* [rot] => 3
* [blau] => 2
* [gruen] => 1
* )
*/
?>

Jeder Wert taucht im Ergebnis genau einmal als Schlüssel auf. Die Zahl dahinter gibt an, wie oft er im Ursprungsarray vorkam.

Ergebnis sortieren mit arsort()

Häufig will man die Ergebnisse nach Häufigkeit sortieren, etwa für eine Top-Liste. Die Funktion arsort() sortiert das Array absteigend nach Wert und behält die Schlüssel bei.

<?php

$tags = ['php', 'mysql', 'php', 'html', 'php', 'mysql'];
$zaehlung = array_count_values($tags);

arsort($zaehlung);

foreach ($zaehlung as $tag => $anzahl) {
echo "$tag: $anzahl mal" . PHP_EOL;
}
/* php: 3 mal
* mysql: 2 mal
* html: 1 mal */
?>

Groß- und Kleinschreibung beachten

array_count_values() unterscheidet zwischen Groß- und Kleinschreibung. Das bedeutet, dass "PHP" und "php" als zwei verschiedene Werte gezählt werden. Bei Tags oder Kategorien ist das selten erwünscht.

<?php

$tags = ['PHP', 'php', 'Php', 'MySQL', 'mysql'];

/* Ohne Bereinigung: 3 verschiedene PHP-Eintraege */
print_r(array_count_values($tags));
/* [PHP]=1, [php]=1, [Php]=1, [MySQL]=1, [mysql]=1 */

/* Mit strtolower: korrekt zusammengefasst */
$bereinigt = array_map('strtolower', $tags);
print_r(array_count_values($bereinigt));
/* [php]=3, [mysql]=2 */
?>

Mit array_map('strtolower', ...) wandelst du alle Werte vor dem Zählen in Kleinbuchstaben um. So werden "PHP", "php" und "Php" als ein Eintrag erkannt.

Einschränkung: Nur Strings und Integer

array_count_values() funktioniert nur mit Werten vom Typ string oder int. Floats, Arrays oder Objekte führen zu einer Warnung und werden übersprungen.

<?php

$gemischt = ['php', 42, 3.14, true, 'php'];
$zaehlung = array_count_values($gemischt);
/* Warning bei 3.14 und true */
/* Ergebnis: [php]=2, [42]=1 */
?>

Wenn dein Array gemischte Typen enthält, filtere vorher mit array_filter() die gültigen Werte heraus.

<?php

$daten = ['php', 42, 3.14, null, '', 'php'];

$bereinigt = array_filter($daten, function($v) {
return is_string($v) && $v !== '';
});

print_r(array_count_values($bereinigt));
/* [php]=2 */
?>

Praxisbeispiel: Worthaeufigkeiten in einem Text

Ein konkreter Anwendungsfall ist die Auswertung, welche Wörter in einem Text am häufigsten vorkommen. Dafür kombinierst du str_word_count() mit array_count_values().

<?php

function topWoerter(
string $text,
int $anzahl = 10
): array {
/* Text in Kleinbuchstaben umwandeln */
$text = mb_strtolower($text);

/* Text in einzelne Woerter zerlegen */
$woerter = str_word_count($text, 1);

/* Haeufigkeit zaehlen und sortieren */
$zaehlung = array_count_values($woerter);
arsort($zaehlung);

/* Nur die Top-N zurueckgeben */
return array_slice(
$zaehlung, 0, $anzahl, true
);
}

$text = "PHP ist eine Sprache. PHP ist beliebt. "
. "PHP macht Webentwicklung einfach.";

print_r(topWoerter($text, 5));
/* [php]=3, [ist]=2, [eine]=1, ... */
?>

Die Funktion str_word_count() mit dem Parameter 1 gibt ein Array aller Wörter zurück. Zusammen mit mb_strtolower() und array_count_values() erhältst du eine saubere Häufigkeitsauswertung.

PHP oder SQL für Häufigkeitsanalysen?

Wenn deine Daten in einer Datenbank liegen, hast du die Wahl: Zählen in PHP mit array_count_values() oder direkt in SQL mit GROUP BY und COUNT(*).

<?php

/* SQL: Bei grossen Datenmengen effizienter */
$sql = "SELECT tag, COUNT(*) AS anzahl
FROM artikel_tags
GROUP BY tag
ORDER BY anzahl DESC
LIMIT 10";

/* PHP: Wenn die Daten bereits im Array liegen */
$tags = ['php', 'mysql', 'php', 'html'];
$zaehlung = array_count_values($tags);
?>

Als Faustregel: Liegen die Daten in der Datenbank, lass die Datenbank zählen. Bei kleinen Arrays oder Daten, die ohnehin im Speicher sind, ist array_count_values() die praktischere Lösung.

Verwandte Tutorials

Diese Tutorials ergänzen das Thema Array-Auswertung:

 

Tags:

 

Bücherregal mit drei Büchern: 'PHP 4 - Grundlagen und Profiwissen' von Hanser Verlag, 'Webdesign in a Nutshell' von O'Reilly Verlag, und 'Webgestaltung' von Galileo Computing.