2015-07-29 10 views

Antwort

11

Verwenden instanceof, um zu bestimmen, ob das Objekt Traversable ist

if($variable instanceof \Traversable) { 
    // is Traversable 
} 
+6

Ein Teeny Notiz hinzuzufügen, dass, wenn dieser Code in den globalen Namensraum nicht zu 'false' bewerten wird, es sei denn Travers importiert oder vollständig qualifizierten, so sollte die OP hinzufügen' verwenden Travers; 'oder' Verwendung \ Traversable' zu ​​ihrem Code. –

+4

Es sollte angemerkt werden, wie in den Kommentaren auf der Traversable phpdoc-Seite erwähnt, dass Objekte und Arrays mit etwas wie foreach durchlaufen werden können, aber keine Instanzen von Traversable sind. – Scott

11

is_iterable seit PHP 7.1 verwendet werden kann.

// https://wiki.php.net/rfc/iterable 
var_dump(
    true === is_iterable([1, 2, 3]), 
    true === is_iterable(new ArrayIterator([1, 2, 3])), 
    true === is_iterable((function() { yield 1; })()) 
);