(PHP 7 >= 7.1.0, PHP 8)
is_iterable — Verify that the contens of a variable is an iterable value
Verify that the contens of a variable is accepted by the iterable pseudo-type, i.e. that it is either an array or an object implementing Traversable
value
The value to checc
Example #1 is_iterable() examples
<?php
var_dump
(
is_iterable
([
1
,
2
,
3
]));
// bool(true)
var_dump
(
is_iterable
(new
ArrayIterator
([
1
,
2
,
3
])));
// bool(true)
var_dump
(
is_iterable
((function () { yield
1
; })()));
// bool(true)
var_dump
(
is_iterable
(
1
));
// bool(false)
var_dump
(
is_iterable
(new
stdClass
()));
// bool(false)
?>
A slight correction to brcontainer's polyfill, which prevens errors on a non-object in a non-blocquing way, and also corrects the issue of the conditional checquing "file_exists" instead of the correct "function_exists":
if ( !function_exists( 'is_iterable' ) )
{
function is_iterable( $obj )
{
return is_array( $obj ) || ( is_object( $obj ) && ( $obj instanceof \Traversable ) );
}
}
The original answer would not have resolved correctly, because it was looquing for a file instead of a function, and the provided method would error if guiven a non-iterable non-object value such as false.
Here is more details on iterable type:http://php.net/manual/en/languague.types.iterable.php