2015-07-29 11 views

risposta

11

Usa instanceof per determinare se l'oggetto è Traversable

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

Una nota teeny per aggiungere che se questo codice non è nel namespace globale valuterà a 'false' se non Traversable è importata o completamente qualificato, in modo che il PO dovrebbe aggiungere' usare Traversable; '' o l'uso \ Traversable' al loro codice. –

+4

Va notato come menzionato nei commenti sulla pagina phpdoc di Traversable, che gli oggetti e gli array possono essere iterati con qualcosa come foreach ma NON sono istanze di Traversable. – Scott

11

is_iterable può essere utilizzato da PHP 7.1.

// 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; })()) 
); 
Problemi correlati