in_array के TRUE लौटाने का कारण स्ट्रिंग-टू-नंबर रूपांतरण हो सकता है। जब फ़ंक्शन को एक स्ट्रिंग पास की जाती है, तो यह 0 लौटाता है, जो खोजा जाने वाला मान है।
PHP ढीले जगलिंग का उपयोग करता है, यानी एलिमेंट्स की तुलना करते समय === के बजाय == का उपयोग करता है। इसलिए, उनके मानों की तुलना की जाती है न कि प्रकारों की।
एक और कारण टाइप जगलिंग है, जिसका अर्थ है कि एक वेरिएबल प्रकार को कोड के संदर्भ में निपटाया जाता है।
उदाहरण के लिए - जब एक फ्लोट मान एक वेरिएबल को असाइन किया जाता है, तो यह एक फ्लोटिंग-पॉइंट मान बन जाता है। यह एक तरह से व्यवहार करता है जब एक स्ट्रिंग को पूर्णांक में कास्ट किया जाता है।
इस प्रकार के व्यवहार से बचने के लिए, एक तीसरा पैरामीटर पास किया जा सकता है, जो डेटा की तुलना सख्त मोड में करता है, जहां मानों के साथ-साथ प्रकारों की भी तुलना की जाती है।
नीचे दिखाया गया है कि फ़ंक्शन कैसे व्यवहार करता है जब एक स्ट्रिंग पास की जाती है:
उदाहरण
echo intval("Hello");
आउटपुट
यह निम्न आउटपुट देगा:
0