is_array()
Die Funktion is_array() prüft in PHP, ob eine Variable ein Array ist, und gibt true oder false zurück.
Was ist is_array()?
is_array() ist eine in PHP eingebaute Funktion, die prüft, ob eine gegebene Variable ein Array ist. Sie gibt true zurück, wenn die Variable ein Array ist, und false für jeden anderen Typ (string, integer, object, null usw.).
PHP ist dynamisch typisiert, sodass eine Variable zur Laufzeit jeden Wert annehmen kann. Bevor Sie über einen Wert iterieren, darauf indizieren oder ihn an eine Array-Funktion wie count() oder array_map() übergeben, lohnt es sich oft zu prüfen, ob es sich wirklich um ein Array handelt. Der Aufruf einer Array-Funktion auf einem Nicht-Array kann einen TypeError (PHP 8+) auslösen oder eine Warnung ausgeben — ein schneller is_array()-Guard macht Ihren Code sicherer.
Syntax
is_array(mixed $value): boolDie Funktion nimmt einen einzigen Parameter entgegen, $value — die zu testende Variable — und gibt immer einen boolean zurück. Sie löst niemals einen eigenen Fehler aus, sodass sie sicher mit jedem Wert aufgerufen werden kann, einschließlich nicht gesetzter Rückgabewerte von Funktionen.
Einfaches Beispiel
Hier ist $list ein Array, sodass is_array() true zurückgibt; $text ist ein string, daher wird false zurückgegeben. Wir verwenden var_dump() statt echo, weil echo true den Wert 1 ausgibt, während echo false einen leeren string ausgibt — was boolesche Werte schwer lesbar macht. var_dump() zeigt Typ und Wert explizit an.
Was als Array gilt
Sowohl indizierte als auch assoziative Arrays geben true zurück, ebenso ein leeres Array. Alles, was lediglich wie eine Kollektion aussieht — wie ein object oder ein ArrayObject — zählt nicht als natives Array.
<?php
var_dump(is_array([])); // bool(true) — empty array
var_dump(is_array([1, 2, 3])); // bool(true) — indexed
var_dump(is_array(["name" => "Ann"])); // bool(true) — associative
var_dump(is_array([[1, 2], [3, 4]])); // bool(true) — multidimensional
var_dump(is_array("array")); // bool(false) — string
var_dump(is_array(42)); // bool(false) — integer
var_dump(is_array(null)); // bool(false) — null
var_dump(is_array(new stdClass())); // bool(false) — object
?>Praktische Anwendung: Absicherung vor der Iteration
Ein gängiges Muster ist das Normalisieren von Eingaben, die entweder als einzelner Wert oder als Liste ankommen können, und anschließendes sicheres Iterieren:
<?php
function printAll(mixed $input): void
{
// Wrap a single value in an array so the loop always works.
if (!is_array($input)) {
$input = [$input];
}
foreach ($input as $item) {
echo $item, "\n";
}
}
printAll("just one"); // just one
printAll(["a", "b", "c"]); // a / b / c on separate lines
?>Dies verhindert eine foreach-Warnung, wenn $input ein Skalar ist, und hält den aufrufenden Code einfach.
is_array() vs. verwandte Prüfungen
is_array()vs.gettype():gettype()gibt einen string wie"array"zurück;is_array()gibt direkt einen boolean zurück, was in einemifbesser lesbar ist.is_array()vs.is_iterable(): Wenn Sie nur wissen müssen, ob Sie über einen Wertforeachausführen können, istis_iterable()umfassender — es akzeptiert sowohl Arrays als auchTraversable-Objekte (wie Generatoren).is_array()vs.is_countable(): Verwenden Sieis_countable()vor dem Aufruf voncount(), um auch Objekte zu akzeptieren, die dasCountable-Interface implementieren.- Für andere skalare Prüfungen siehe
is_string()undis_int().
Zusammenfassung
Verwenden Sie is_array(), wenn Sie eine schnelle, fehlerfreie Prüfung benötigen, ob ein Wert ein echtes PHP-Array ist — meistens als Guard vor einer Schleife oder vor dem Aufruf einer Array-spezifischen Funktion. Wenn Sie auch iterierbare Objekte zulassen müssen, greifen Sie stattdessen zu is_iterable() oder is_countable().