2015-07-29 5 views
9

मैं पैरामीटर प्रकार के बारे में बात नहीं करता, असल में मैं कोड के बीच में हूं!यह पता लगाने के लिए कि क्या ऑब्जेक्ट PHP में ट्रैवर्सबल है?

foreach loops में उपयोग करने के लिए वेरिएबल का पता कैसे लगा सकता है Traversable ऑब्जेक्ट है?

if(is_traversable($variable)) { 
    return (array) $variable; 
} 

उत्तर

11

उपयोग instanceof निर्धारित करने के लिए वस्तु Traversable

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

एक नन्हा नोट जोड़ने के लिए है, तो इस कोड को वैश्विक नामस्थान यह जब तक traversable आयातित या पूरी तरह से योग्य है 'FALSE' करने का मूल्यांकन करेंगे में नहीं है, इसलिए ओपी' traversable का उपयोग जोड़ना चाहिए कि; उपयोग 'या' \ Traversable' उनके कोड में। –

+4

ट्रैवर्सबल phpdoc पृष्ठ पर टिप्पणियों में उल्लिखित यह ध्यान दिया जाना चाहिए, कि ऑब्जेक्ट्स और सरणी को फ़ैचैच जैसे कुछ के साथ पुनरावृत्त किया जा सकता है लेकिन ट्रैवर्स के उदाहरण नहीं हैं। – Scott

11

is_iterable पीएचपी 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; })()) 
); 
संबंधित मुद्दे