Die Funktion count() zählt die Elemente in einem Array und gibt deren Anzahl als Ganzzahl zurück. Sie gehört zu den am häufigsten verwendeten Array-Funktionen in PHP und kommt überall dort zum Einsatz, wo die Größe eines Arrays eine Rolle spielt, etwa bei Schleifen, Validierungen oder Paginierung.
Grundlegende Verwendung
count() erwartet ein Array als Parameter und gibt die Anzahl der enthaltenen Elemente zurück:
<?php
$staedte = ['Berlin', 'Hamburg', 'München'];
echo count($staedte); // 3
?>
Der Rückgabewert ist immer ein int. Bei einem leeren Array gibt count() den Wert 0 zurück.
Praxisbeispiel: Formular-Validierung
Ein häufiger Anwendungsfall ist die Prüfung, ob ein Benutzer mindestens eine Option ausgewählt hat:
<?php
$auswahl = ['PHP', 'JavaScript'];
if (count($auswahl) < 1) {
echo 'Bitte mindestens eine Sprache auswählen.';
} else {
echo count($auswahl) . ' Sprachen ausgewählt.';
}
/* Ausgabe: 2 Sprachen ausgewählt. */
?>
Wer nur wissen möchte, ob ein Array leer ist, kann alternativ empty() verwenden. Das ist etwas sprechender als der Vergleich count($array) === 0.
Mehrdimensionale Arrays mit COUNT_RECURSIVE
Standardmäßig zählt count() nur die Elemente auf der ersten Ebene. Mit der Konstante COUNT_RECURSIVE als zweitem Parameter werden auch alle verschachtelten Elemente mitgezählt:
<?php
$teams = [
'Backend' => ['Anna', 'Ben'],
'Frontend' => ['Clara', 'David', 'Eva']
];
echo count($teams); // 2
echo count($teams, COUNT_RECURSIVE); // 7
?>
Der Wert 7 ergibt sich aus den zwei Schlüsseln der ersten Ebene plus den fünf Namen in den Unter-Arrays. Um nur die Personen zu zählen, kann die Differenz gebildet werden: count($teams, COUNT_RECURSIVE) - count($teams) ergibt 5.
count() in Schleifen
Beim Einsatz von count() in einer for-Schleife empfiehlt es sich, den Wert vorher in einer Variablen zu speichern. So wird die Funktion nicht bei jedem Durchlauf erneut aufgerufen:
<?php
$produkte = ['Laptop', 'Maus', 'Tastatur'];
$anzahl = count($produkte);
for ($i = 0; $i < $anzahl; $i++) {
echo ($i + 1) . '. ' . $produkte[$i] . '<br>';
}
/* Ausgabe:
1. Laptop
2. Maus
3. Tastatur */
?>
Bei kleinen Arrays macht das kaum einen Unterschied. Bei größeren Datenmengen oder in Performance-kritischen Bereichen ist es aber eine gute Gewohnheit.
sizeof() als Alias
Die Funktion sizeof() ist ein Alias für count() und verhält sich identisch. In der Praxis wird fast ausschließlich count() verwendet, da es eindeutiger ist. sizeof() stammt aus der C-Welt und kann dort leicht verwechselt werden.