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