Prüfen, ob eine Variable ein Array ist

Welche Funktionen existieren, ob in PHP herauszufinden, ob es sich bei einer Variable um ein Array handelt

1. is_array()

Die Funktion is_array($var) gibt zurück, ob die übergebene Variable ein Array ist:

PHP-Code
<?php
    var_dump( is_array(array()) ); // true
	var_dump( is_array(array(1, 2, 3)) ); // true
	var_dump( is_array(array(array())) ); // true
	var_dump( is_array($_SERVER) ); // true

	var_dump( is_array(1) ); // false
	var_dump( is_array(0) ); // false
	var_dump( is_array(1.999) ); // false
	var_dump( is_array('foo') ); // false
	var_dump( is_array(true) ); // false
	var_dump( is_array(new stdClass()) ); // false
	var_dump( is_array('array()') ); // false
?>

HTML-Code: Ausgabe
bool(true)
bool(true)
bool(true)
bool(true)
bool(false)
bool(false)
bool(false)
bool(false)
bool(false)
bool(false)
bool(false)


Die Verwendung von is_array() zum Prüfen von Funktionsparametern ist nicht zwingend notwendig, da arrays bereits vorgeschrieben werden können:

PHP-Code
<?php
	function meineFunktion(array $a) {
		// ...
	}

	meineFunktion('test'); // erzeugt einen Fehler
?>

HTML-Code: Ausgabe
<br />
<b>Catchable fatal error</b>:  Argument 1 passed to meineFunktion() must be an array, string given, called in ...\test.php on line 6 and defined in <b>...\test.php</b> on line <b>2</b><br />


2. Anwendung bei Funktionsparametern

Die Funktion is_array() kann nützlich sein, wenn ein Funktionsparameter zwar gewöhnlich ein Array sein sollte, optional aber auch andere Datentypen haben kann. Im nachfolgenden Beispiel wird eine Funktion „sucheMehrereUser” definiert, welche mit mehreren Namen oder ID-Nummern — übergeben als Array — aufgerufen werden soll. Es wird aber auch die Option angeboten, nur einen String (ein einzelner Benutzername) oder einen Integer (eine einzelne ID) zu übergeben. Der String oder die ID werden dann automatisch in ein Array umgewandelt.

PHP-Code: Beispiel 1: Es darf Integer, String oder Array von Strings/Integern übergeben werden
<?php
	function sucheMehrereUser($namen) {
		// wurde z.B. nur ein einzelner Name übergeben?
		if (!is_array($namen)) {
			// Wurde ein Name übergeben?
			if (!is_string($namen) && !is_int($namen)) {
				throw new Exception('Sting/Integer oder Array von Strings/Integern erwartet.');
			} else {
				return sucheMehrereUser(array($namen));
			}
		} else {
			// suche
			// hier beispielhaft nur Ausgabe der Namen/Ids
			echo("suche nach: ");
			array_walk($namen, function($name) { echo "$name, " });
			echo("\n");
		}
	}

	sucheMehrereUser('testuser');
	sucheMehrereUser(1413);
	sucheMehrereUser(array('a', 'b', 'c'));
?>

HTML-Code: Ausgabe
suche nach: testuser, 
suche nach: 1413, 
suche nach: a, b, c, 


Im nächsten Beispiel ist ein Parameter komplett optional, muss aber zwangsweise ein Array sein, falls er vom Entwickler definiert wird. Wird er nicht übergeben, dann soll er automatisch mit einem leeren Array belegt werden.

PHP-Code: Beispiel 2: Default-Wert für nicht definiertes Array
<?php
	function tuWas(array $data=null) {
		// Aehnlich verhalten wuerden sich hier auch is_null($data) oder $data===null
		if (!is_array($data)) {
			// hier könnten einige Default-Werte festgelegt werden
			$data = array();
		}

		var_dump($data);
	}

	tuWas(array(1, 2, 3));
	tuWas();
?>

HTML-Code: Ausgabe
array(3) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
}
array(0) {
}



Deprecated: Directive 'allow_url_include' is deprecated in Unknown on line 0