PHP 7.1.0では、このような目的のために特別に設計された疑似型と関数が導入されました。iterable
is_iterable()
これは[…]新しいiterable
疑似型を提案します。このタイプはに類似してcallable
おり、単一のタイプではなく複数のタイプを受け入れます。
iterable
array
を実装する任意のまたはオブジェクトを受け入れますTraversable
。これらのタイプは両方ともを使用して反復可能であり、ジェネレーター内からforeach
使用できます。yield
function foo(iterable $iterable) {
foreach ($iterable as $value) {
// ...
}
}
この[…]is_iterable()
は、ブール値を返す関数も追加します。値が反復可能であり、他の値の場合は疑似型true
によって受け入れられる場合。iterable
false
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($var)
を使用して、渡された変数が配列であるかどうかを確認することもできます。
<?php
var_dump( is_array(array()) ); // true
var_dump( is_array(array(1, 2, 3)) ); // true
var_dump( is_array($_SERVER) ); // true
?>
詳細については、PHPで変数が配列であるかどうかを確認する方法をご覧ください。