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:
$var | Rückgabe |
|---|---|
Array (z. B. [1, 2, 3] oder []) | true |
Objekt, das Countable implementiert | true |
| string, integer, float, boolean | false |
null | false |
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())ergibtfalse. Das Objekt muss dasCountable-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, nichtcount(). - 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 Countablenachgebildet werden.
Verwandte Funktionen
count()— zählt die Elemente eines zählbaren Wertes; die Funktion, dieis_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.