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