count()
Die PHP-Funktion count() gibt die Anzahl der Elemente in einem array oder die Anzahl der Eigenschaften eines object zurück.
Die Funktion count() ist eine in PHP eingebaute Funktion, die die Anzahl der Elemente in einem array zurückgibt. Sie kann auch ein object zählen, sofern dieses object das Countable-Interface implementiert. Sie gehört zu den am häufigsten verwendeten array-Funktionen in PHP und wird typischerweise eingesetzt, um die Anzahl der Elemente einer Liste zu ermitteln, bevor man sie durchläuft, paginiert oder validiert.
Dieses Kapitel behandelt die Syntax, den optionalen rekursiven Zählmodus, das Verhalten von count() bei objects und Grenzwerten sowie die häufigsten Fehler, die es zu vermeiden gilt.
Syntax der count()-Funktion
Die Syntax der Funktion count() ist unkompliziert. Sie nimmt ein Argument entgegen, nämlich das array oder object, das gezählt werden soll. Die Funktion gibt eine ganze Zahl zurück, die die Anzahl der Elemente oder Eigenschaften darstellt.
<?php
count(mixed $array_or_object, int $mode = COUNT_NORMAL): intHinweis: Die typisierte Signatur oben entspricht PHP 8.0+. In PHP 8.0+ wirft das Übergeben eines nicht zählbaren Typs (z. B. ein string oder Integer) einen
ValueError. Ältere PHP-Versionen verfügen nicht über strenge Typhinweise, funktionieren aber identisch. Hinweis:sizeof()ist ein veralteter Alias fürcount()und verhält sich identisch.
Das zweite Argument, $mode, ist optional und gibt an, wie sich die Funktion count() verhalten soll. Es akzeptiert zwei mögliche Werte:
COUNT_NORMAL: Dies ist der Standardmodus und verhält sich genauso wie die Funktioncount()ohne den Parameter$mode. Es werden einfach die Elemente im array oder die Eigenschaften im object gezählt.COUNT_RECURSIVE: Dieser Modus zählt die Elemente in verschachtelten arrays und objects rekursiv.
<?php
$data = array('apple', array('banana', 'cherry'));
echo count($data); // Output: 2
echo count($data, COUNT_RECURSIVE); // Output: 4Mit COUNT_NORMAL (dem Standard) gibt count($data) 2 zurück: Das äußere array enthält zwei Elemente — den string 'apple' und das innere array. Mit COUNT_RECURSIVE zählt PHP auch die Elemente innerhalb jedes verschachtelten arrays, sodass 4 zurückgegeben wird: 'apple', das innere array selbst, 'banana' und 'cherry'. Verwende den rekursiven Modus nur, wenn du wirklich die Gesamtanzahl über alle Verschachtelungsebenen benötigst — er durchläuft die gesamte Struktur und ist bei großen, tief verschachtelten arrays langsamer.
Beispiele zur Verwendung der count()-Funktion
Sehen wir uns einige praktische Beispiele an, wie die Funktion count() verwendet werden kann, um die Elemente in einem array und die Eigenschaften in einem object zu zählen.
Beispiel 1: Elemente in einem array zählen
Elemente in einem array in PHP zählen
In diesem Beispiel haben wir ein array namens $fruits mit drei Elementen. Die Funktion count() gibt 3 zurück, was der Gesamtanzahl der Elemente im array entspricht.
Beispiel 2: Eigenschaften in einem object zählen
Eigenschaften in einem object in PHP zählen
<?php
class Person implements Countable
{
public $name;
public $age;
public function count()
{
return count(get_object_vars($this));
}
}
$person = new Person();
$person->name = 'John';
$person->age = 30;
echo count($person); // Output: 2In diesem Beispiel haben wir eine einfache Klasse namens Person mit zwei öffentlichen Eigenschaften, $name und $age. Wir erstellen eine neue Instanz der Klasse Person und setzen die Werte ihrer Eigenschaften. Da die Klasse das Countable-Interface implementiert, ruft der Aufruf von count($person) die benutzerdefinierte Methode count() auf, die 2 zurückgibt. Dies zeigt, wie das Verhalten von count() für objects angepasst werden kann.
Hinweis: Ohne das
Countable-Interface wirft das Übergeben eines gewöhnlichen objects ancount()in PHP 8.0+ einenTypeError.count()zählt die Eigenschaften eines objects nicht automatisch — wenn du das möchtest, verwende direktcount(get_object_vars($obj)).
Häufige Fehler und Grenzfälle
Einige Verhaltensweisen von count() überraschen Entwickler regelmäßig:
- Das Zählen von
nulloder skalaren Werten wirft in PHP 8 einen Fehler. In PHP 7.2–7.4 gabcount(null)eine Warnung aus und lieferte0, und das Zählen eines nicht zählbaren Skalars lieferte1. Seit PHP 8.0 wirft das Übergeben eines nicht zählbaren Werts (null, ein string, ein Integer) einenTypeError. Überprüfe den Wert zuerst, wenn er möglicherweise kein array ist. count()ist keine Funktion zur Ermittlung der Zeichenkettenlänge. Um die Zeichen in einem string zu zählen, verwendestrlen(), nichtcount().- Standardmäßig wird nur die oberste Ebene gezählt. Wie oben gezeigt, zählen verschachtelte arrays als einzelnes Element, es sei denn, du übergibst
COUNT_RECURSIVE.
<?php
$value = null;
// Safe even when $value is not an array:
$total = is_array($value) ? count($value) : 0;
echo $total; // Output: 0Verwende is_array(), um sicherzustellen, dass ein Wert zählbar ist, bevor du count() auf Daten aufrufst, deren Typ du nicht kontrollierst (z. B. dekodiertes JSON oder eine Datenbankzeile).
Verwandte Funktionen
array_count_values()— zählt, wie oft jeder einzelne Wert in einem array vorkommt.in_array()— prüft, ob ein Wert in einem array vorhanden ist.array_push()— fügt Elemente zu einem array hinzu (dessen Größe du dann mitcount()ermitteln kannst).- Mehrdimensionale arrays — wo
COUNT_RECURSIVEam nützlichsten ist. - foreach-Schleife — iteriere über die gerade gezählten Elemente.
Fazit
Die Funktion count() ist ein kleines, aber unverzichtbares Werkzeug für die Arbeit mit arrays in PHP. Verwende sie, um die Größe einer Liste vor dem Durchlaufen oder Paginieren zu bestimmen, greife auf COUNT_RECURSIVE zurück, wenn du eine vollständige Zählung über verschachtelte arrays benötigst, und denke daran, dass du in PHP 8.0+ ein echtes array (oder ein Countable-object) übergeben musst — sichere unsichere Werte zuerst mit is_array() ab. Mit diesen Regeln im Hinterkopf ist count() eine zuverlässige und lesbare Methode, um die Datenstrukturen zu messen, auf die dein Code angewiesen ist.