W3docs

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): int

Hinweis: 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ür count() 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 Funktion count() 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: 4

Mit 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

php— editable, runs on the server

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: 2

In 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 an count() in PHP 8.0+ einen TypeError. count() zählt die Eigenschaften eines objects nicht automatisch — wenn du das möchtest, verwende direkt count(get_object_vars($obj)).

Häufige Fehler und Grenzfälle

Einige Verhaltensweisen von count() überraschen Entwickler regelmäßig:

  • Das Zählen von null oder skalaren Werten wirft in PHP 8 einen Fehler. In PHP 7.2–7.4 gab count(null) eine Warnung aus und lieferte 0, und das Zählen eines nicht zählbaren Skalars lieferte 1. Seit PHP 8.0 wirft das Übergeben eines nicht zählbaren Werts (null, ein string, ein Integer) einen TypeError. Ü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, verwende strlen(), nicht count().
  • 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: 0

Verwende 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

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.

Übungen

Übung
Was ist die Funktionalität der Funktion 'count()' in PHP?
Was ist die Funktionalität der Funktion 'count()' in PHP?
Was this page helpful?