Signatur
Beschreibung
is_countable() gibt true zurück, wenn der übergebene Wert entweder ein array oder ein Objekt ist, das das Interface Countable implementiert. In allen anderen Fällen wird false zurückgegeben.
Die Funktion wurde eingeführt, um eine häufige Fehlerquelle zu beheben: Seit PHP 7.2 erzeugt ein Aufruf von count() auf nicht-zählbare Werte eine E_WARNING-Meldung. Mit is_countable() kann man sicher prüfen, ob ein Wert gezählt werden darf, bevor man count() aufruft.
Typische Anwendungsfälle sind die Prüfung von Rückgabewerten aus Funktionen oder Methoden, die entweder ein Array/eine Collection oder null bzw. einen skalaren Wert zurückgeben können. Statt umständlicher Typprüfungen mit is_array() und instanceof Countable bietet is_countable() eine kompakte Alternative.
Ab PHP 8.0 löst count() auf nicht-zählbaren Werten (außer null) einen TypeError aus, was die Verwendung von is_countable() noch wichtiger macht.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $value Pflicht | mixed | Der zu prüfende Wert. Kann ein beliebiger PHP-Typ sein, also ein Array, Objekt, Skalar oder null. |
Rückgabewert
true zurück, wenn $value ein array ist oder ein Objekt, das Countable implementiert. Andernfalls wird false zurückgegeben.Beispiele
Grundlegende Verwendung mit Arrays und Objekten
<?php
$array = [1, 2, 3];
$string = 'Hallo';
$null = null;
var_dump(is_countable($array)); // true
var_dump(is_countable($string)); // false
var_dump(is_countable($null)); // false
class MyCollection implements Countable {
private array $items;
public function __construct(array $items) {
$this->items = $items;
}
public function count(): int {
return count($this->items);
}
}
$collection = new MyCollection([10, 20, 30]);
var_dump(is_countable($collection)); // true
Sicheres Zählen vor dem count()-Aufruf
<?php
function getItems(bool $valid): array|string {
return $valid ? ['Apfel', 'Banane', 'Kirsche'] : 'Keine Daten';
}
$result = getItems(true);
if (is_countable($result)) {
echo 'Anzahl der Elemente: ' . count($result) . PHP_EOL;
} else {
echo 'Wert ist nicht zählbar: ' . $result . PHP_EOL;
}
$result = getItems(false);
if (is_countable($result)) {
echo 'Anzahl der Elemente: ' . count($result) . PHP_EOL;
} else {
echo 'Wert ist nicht zählbar: ' . $result . PHP_EOL;
}
// Wichtig · Fallstricke
PHP-Versionskompatibilität: Für PHP-Versionen vor 7.3 kann die Funktion selbst implementiert werden: function is_countable($value): bool { return is_array($value) || $value instanceof Countable; }
Verhalten bei null: is_countable(null) gibt false zurück. In PHP 7.x lieferte count(null) noch 0 mit einer E_WARNING, seit PHP 8.0 wirft es hingegen einen TypeError.
Achtung bei SimpleXMLElement: SimpleXMLElement implementiert Countable, weshalb is_countable() dafür true zurückgibt. Das Verhalten von count() auf SimpleXMLElement-Objekten kann jedoch unintuitiv sein.