How to check if a variable is an array in PHP?
In this tutorial, we are going to see how to check if a variable is an array in PHP?
is_array()
The function is_array($var) check if the passed variable is an array:
<?php var_dump( is_array(array()) ); // true var_dump( is_array(array(1, 2, 3)) ); // true var_dump( is_array($_SERVER) ); // true var_dump( is_array(1) ); // false var_dump( is_array(0) ); // false var_dump( is_array(2.555) ); // false var_dump( is_array('lorem') ); // false var_dump( is_array(true) ); // false var_dump( is_array(new stdClass()) ); // false ?>
Output:
bool(true) bool(true) bool(true) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false)[st_adsense]
The use of is_array() to check function parameters is not absolutely necessary, since arrays can already be specified:
<?php function myFunction(array $a) { // ... } myFunction('hello'); // generates an error ?>
Output:
Fatal error: Uncaught TypeError: Argument 1 passed to myFunction() must be of the type array, string given, called in [...][...] on line 6 and defined in [...][...]:2 Stack trace: #0 [...][...](6): myFunction('hello') #1 {main} thrown in [...][...] on line 2
Function parameters:
The function is_array() can be useful when a function parameter should usually be an array, but can optionally have other data types. The following example defines a function “searchMultipleUser”, which is called with multiple names or ID numbers – passed as array. But there is also the option to pass only a string (a single user name) or an integer (a single ID). The string or ID is then automatically converted into an array.
<?php function searchMultipleUser($name) { if (!is_array($name)) { // A name was given? if (!is_string($name) && !is_int($name)) { throw new Exception('String/integer or array of strings/integers expected.'); } else { return searchMultipleUser(array($name)); } } else { // search // here, we output the names / IDs echo("search for: "); array_walk($name, function($n) { echo "$n, "; }); echo("\n"); } } searchMultipleUser('Alex'); searchMultipleUser(10001); searchMultipleUser(array('Alex', 'Bob', 'Ali')); ?>
Output:
search for: Alex, search for: 10001, search for: Alex, Bob, Ali,[st_adsense]
In the next example, a parameter is completely optional, but must be an array if defined by the developer. If it is not passed, it should be automatically filled with an empty array.
<?php function check(array $data=null) { // check if $data is an array if (!is_array($data)) { // here some default values could be set $data = array(); } var_dump($data); } check(array(1, 2, 3, 4)); check(); ?>
Output:
array(4) { [0]=> int(1) [1]=> int(2) [2]=> int(3) [3]=> int(4) } array(0) { }[st_adsense]