is_iterable()
(PHP 7 >= 7.1.0)
Verify that the contents of a variable is an iterable value
说明
is_iterable(mixed $var): bool
Verify that the contents of a variable is accepted by theiterablepseudo-type, i.e. that it is either anarrayor an object implementingTraversable
参数
- $var
The value to check
返回值
ReturnsTRUE
if$varis iterable,FALSE
otherwise.
范例
Example #1is_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) ?>
参见
is_array()
检测变量是否是数组
A slight correction to brcontainer's polyfill, which prevents errors on a non-object in a non-blocking way, and also corrects the issue of the conditional checking "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 looking for a file instead of a function, and the provided method would error if given a non-iterable non-object value such as false.
Here is more details on iterable type: http://php.net/manual/en/language.types.iterable.php
Polyfill for PHP5.6 and PHP7.0 if (!file_exists('is_iterable')) { function is_iterable($obj) { return is_array($obj) || $obj instanceof \Traversable; } }