1. is_array()
Die Funktion is_array($var) gibt zurück, ob die übergebene Variable ein Array ist:
<?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 ?>
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 function meineFunktion(array $a) { // ... } meineFunktion('test'); // erzeugt einen Fehler ?>
<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 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')); ?>
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 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(); ?>
array(3) { [0]=> int(1) [1]=> int(2) [2]=> int(3) } array(0) { }
Kommentare (1)
Von neu nach altWir bitten um ihr Verständnis.