count($arr) liefert die Anzahl der Elemente eines Arrays: count(['red', 'green', 'blue']) ist 3. PHP-Arrays haben keine Eigenschaft length, also bekommst du die Länge oder Größe eines Arrays mit count().
count() ist schnell: PHP speichert die Größe im Array selbst, also kostet das Zählen von einer Million Elementen genauso viel wie das Zählen von dreien.
Ein mehrdimensionales Array zählen
Standardmäßig zählt count() nur die oberste Ebene. Übergib COUNT_RECURSIVE (oder 1) als zweites Argument, um jedes Element auf jeder Ebene zu zählen. Die verschachtelten Arrays selbst werden mitgezählt, deshalb ist die Summe oft größer als die Zahl der Blattwerte.
Beide Abkürzungen setzen genau zwei Ebenen voraus. Bei tieferer Verschachtelung in einem mehrdimensionalen Array zählst du die Blätter mit array_walk_recursive(): $n = 0; array_walk_recursive($arr, function () use (&$n) { $n++; });.
count vs sizeof
sizeof() ist ein Alias von count(): gleiche Argumente, gleiches Ergebnis. Verwende count(). Das verwenden fast alle PHP-Codebasen und Dokumentationen, und sizeof lässt jeden, der C kennt, an eine Größe in Bytes denken.
Werte zählen, die eine Bedingung erfüllen
count() hat kein Argument für eine Bedingung. Filtere zuerst und zähle dann: array_filter() behält die Elemente, die dein Callback akzeptiert. Um zu zählen, wie oft jeder Wert vorkommt, verwendest du array_count_values().
Zeichen in einem String zählen
count() ist für Arrays. Für einen String verwendest du strlen() für Bytes oder mb_strlen() für Zeichen; sie unterscheiden sich, sobald der Text Umlaute, Akzente oder Japanisch enthält. Die Seite zu strlen behandelt den Unterschied. Um Wörter zu zählen, teilst du den String zuerst auf.
str_word_count() behandelt Nicht-ASCII-Buchstaben als Trennzeichen, also zählt naïve als zwei Wörter. An Leerzeichen zu teilen ist bei echtem Text vorhersehbarer.
count() auf null oder einen String wirft einen Fehler
Seit PHP 8 akzeptiert count() nur Arrays und Objekte, die Countable implementieren. Alles andere wirft einen TypeError, wo PHP 7.2 bis 7.4 mit einer Warnung 0 (bei null) oder 1 (bei einem String oder einer Zahl) zurückgab. Die übliche Ursache ist eine Variable, die manchmal null ist, etwa ein fehlender Schlüssel oder eine Funktion, die nichts zurückgegeben hat.
Setze mit ?? ein leeres Array als Standardwert, dann ist die Anzahl 0:
Prüfen, ob ein Array leer ist
Um zu fragen, „ob dieses Array überhaupt etwas enthält“, vergleichst du mit einem leeren Array oder verwendest empty(). count($arr) === 0 funktioniert auch, aber nur, wenn $arr sicher ein Array ist.
empty($x) wirft nie einen Fehler, selbst wenn $x undefiniert oder null ist, und ist damit die sicherere Prüfung für einen Wert, der vielleicht kein Array ist. Seine anderen Regeln (ein leerer String und "0" sind ebenfalls leer) stehen auf der Seite zu empty.
Häufig gestellte Fragen
Wie bekomme ich in PHP die Länge eines Arrays?
Mit count($arr). Es liefert die Anzahl der Elemente als Ganzzahl, also ist count([10, 20, 30]) gleich 3. PHP-Arrays haben keine Eigenschaft length.
Was ist der Unterschied zwischen count und sizeof in PHP?
Keiner. sizeof() ist ein Alias von count() und nimmt dieselben Argumente. Die meisten verwenden count(), und sizeof() kann Leser verwirren, die C kennen, wo es Bytes bedeutet.
Wie zähle ich die Elemente eines mehrdimensionalen Arrays?
count($arr) zählt nur die oberste Ebene. count($arr, COUNT_RECURSIVE) zählt jedes Element auf jeder Ebene, und die verschachtelten Arrays zählen selbst auch als Elemente.
Warum wirft count() in PHP 8 einen TypeError?
Seit PHP 8.0 akzeptiert count() nur Arrays und Objekte, die Countable implementieren. count(null) wirft TypeError: count(): Argument #1 ($value) must be of type Countable|array, null given, und count('abc') dasselbe mit string given. Verwende count($x ?? []) für einen Wert, der null sein kann, und strlen() für Strings.