W3docs

is_countable()

Die Funktion is_countable() ist eine integrierte PHP-Funktion, die prüft, ob eine Variable zählbar ist. Sie wurde in PHP 7.3 eingeführt.

Einführung

Die Funktion is_countable() ist eine integrierte PHP-Funktion, die prüft, ob eine Variable zählbar ist — das heißt, ob sie sicher an count() übergeben werden kann. Ein Wert ist zählbar, wenn er ein Array oder ein Objekt ist, das das Countable-Interface implementiert. Für diese beiden Fälle gibt die Funktion true zurück, für alles andere false.

Sie wurde in PHP 7.3 eingeführt, um ein reales Problem zu lösen. Ab PHP 7.2 gibt count() eine Warnung aus, wenn ein Wert übergeben wird, der kein Array oder Countable-Objekt ist (in PHP 8.0 wurde daraus ein TypeError). Vor is_countable() musste man is_array($x) || $x instanceof Countable von Hand schreiben, um sich davor zu schützen. Diese Funktion macht diese Prüfung zu einem einzigen, lesbaren Aufruf.

Diese Seite behandelt die Syntax, den Rückgabewert, ein funktionierendes Beispiel, das häufige "Safe Count"-Muster sowie mögliche Fallstricke.

Syntax

Die Syntax der Funktion is_countable() lautet wie folgt:

Die PHP-Syntax von is_countable()

mixed is_countable(mixed $var)

Hinweis: Der Typhinweis mixed erfordert PHP 8.0+. In PHP 7.3 lautet die Signatur einfach is_countable($var).

Die Funktion nimmt einen einzigen Parameter entgegen, $var, die zu prüfende Variable.

Rückgabewert

is_countable() gibt immer einen boolean zurück und wirft niemals einen Fehler, unabhängig davon, was übergeben wird:

$varRückgabe
Array (z. B. [1, 2, 3] oder [])true
Objekt, das Countable implementierttrue
string, integer, float, booleanfalse
nullfalse
Einfaches Objekt (z. B. new stdClass())false

Das leere Array [] ist weiterhin zählbar — ob ein Wert zählbar ist, hängt vom Typ ab, nicht davon, ob er Elemente enthält.

Verwendungsbeispiel

Hier ist ein Beispiel, wie die Funktion is_countable() in PHP verwendet wird:

Beispiel für PHP is_countable()

<?php
$var1 = ["apple", "banana", "orange"];
$var2 = "hello";
$var3 = new stdClass();
$var4 = 42;
var_dump(is_countable($var1)); // output: bool(true)
var_dump(is_countable($var2)); // output: bool(false)
var_dump(is_countable($var3)); // output: bool(false)
var_dump(is_countable($var4)); // output: bool(false)

class MyCountable implements Countable {
    public function count(): int { return 5; }
}
$countableObj = new MyCountable();
var_dump(is_countable($countableObj)); // output: bool(true)
?>

In diesem Beispiel definieren wir vier Variablen mit verschiedenen Datentypen: $var1 ist ein Array, $var2 ist ein string, $var3 ist ein einfaches Objekt und $var4 ist ein integer. Anschließend verwenden wir is_countable(), um jede einzelne zu prüfen. Nur $var1 (ein Array) ist zählbar. Beachten Sie, dass $var3 false ergibt, obwohl es ein Objekt ist — ein einfaches stdClass-Objekt implementiert das Countable-Interface nicht. Das letzte Beispiel zeigt, dass MyCountable, das das Countable-Interface implementiert, als zählbar erkannt wird.

Das "Safe Count"-Muster

Der häufigste Grund für den Einsatz von is_countable() ist das Absichern eines count()-Aufrufs gegen Werte, die möglicherweise nicht zählbar sind — zum Beispiel Daten aus einer API, einer Datenbank oder Benutzereingaben, bei denen ein Feld null, ein string oder ein fehlendes Array sein könnte:

Absichern von count() mit is_countable()

<?php
function safeCount(mixed $value): int {
    return is_countable($value) ? count($value) : 0;
}

echo safeCount(["a", "b", "c"]), "\n"; // output: 3
echo safeCount("not an array"), "\n";  // output: 0
echo safeCount(null), "\n";            // output: 0
?>

Ohne die Absicherung wirft count("not an array") in PHP 8.0+ einen TypeError. is_countable() ermöglicht es, stattdessen auf einen sinnvollen Standardwert zurückzufallen, anstatt abzustürzen.

Fallstricke

  • Ein einfaches Objekt ist nicht zählbar. is_countable(new stdClass()) ergibt false. Das Objekt muss das Countable-Interface implementieren, damit die Prüfung erfolgreich ist.
  • Strings sind niemals zählbar, auch wenn sie eine Länge haben. Verwende strlen() für Zeichen, nicht count().
  • Es wird nur der Typ geprüft, nicht die Tiefe. is_countable() gibt keine Auskunft über verschachtelte Arrays — count() selbst nimmt ein $mode-Argument für rekursives Zählen entgegen.
  • Vor PHP 7.3 kann die Prüfung mit is_array($var) || $var instanceof Countable nachgebildet werden.

Verwandte Funktionen

  • count() — zählt die Elemente eines zählbaren Wertes; die Funktion, die is_countable() schützen soll.
  • is_array() — engere Prüfung nur für den Array-Fall.
  • is_object() — prüft, ob ein Wert irgendein Objekt ist (zählbar oder nicht).
  • gettype() — gibt den Typnamen einer Variable zurück.

Fazit

Die Funktion is_countable() ist ein nützliches Werkzeug, um in PHP zu prüfen, ob eine Variable zählbar ist. Sie kann verwendet werden, um Fehler zu vermeiden, die auftreten können, wenn nicht zählbare Variablen wie strings oder Objekte gezählt werden sollen. Durch den Einsatz dieser Funktion können Entwickler sicherstellen, dass ihr Code nur mit zählbaren Variablen arbeitet, was den Code effizienter und zuverlässiger macht.

Übung

Übung
Was bewirkt die Funktion is_countable() in PHP?
Was bewirkt die Funktion is_countable() in PHP?
Was this page helpful?