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) {

}