PHP Version
4+
/* Indexed array type */
var_dump(is_array(array(1, 2, 3))); // bool(true)
var_dump(is_array([1, 2, 3]));      // bool(true)
var_dump(is_array([]));             // bool(true)

/* Associative array type */
var_dump(is_array(array('name' => 'foo', 'age' => 30))); // bool(true)
var_dump(is_array(['name' => 'foo', 'age' => 30]));      // bool(true)

/* Boolean and string types */
var_dump(is_array(true));            // bool(false)
var_dump(is_array(false));           // bool(false)
var_dump(is_array('array'));         // bool(false)

/* Other types */
var_dump(is_array(100));             // bool(false)
var_dump(is_array(null));            // bool(false)

/* Type casting */
var_dump(is_array((array) 'foo'));   // bool(true)
var_dump(is_array((array) 100));     // bool(true)
is_array(mixed $value): bool
$a = array(); // Empty array using array()
$b = [];      // Empty array using [] (introduced in PHP 5.4+)

var_dump(is_array($a)); // bool(true)
var_dump(is_array($b)); // bool(true)
class MyClass {
    public $property;

    public function __construct($value) {
        $this->property = $value;
    }
}

$obj = new MyClass('value');
var_dump(is_array($obj)); // bool(false)
function my_function($data) {
    if (!is_array($data)) {
        throw new InvalidArgumentException('The argument must be an array.');
    }
    // ...
}
$data = maybe_get_array();

if (is_array($data)) {
	foreach ($data as $item) {
		// ...
	}
}