मैं कुछ डेटा पार्सिंग कोड पर काम कर रहा था, जबकि मैं निम्नलिखित में आया था।अजीब PHP स्ट्रिंग इंटीजर तुलना और रूपांतरण
$line = "100 something is amazingly cool";
$key = 100;
var_dump($line == $key);
खैर हम में से ज्यादातर डंप एक false
निर्माण करने के लिए उम्मीद करेंगे, लेकिन मेरे आश्चर्य डंप एक true
था!
मुझे समझ नहीं PHP में उस तरह जैसे रूपांतरण है कि वहाँ:
$x = 5 + "10 is a cool number"; // as documented on PHP manual
var_dump($x); // int(15) as documented.
लेकिन स्ट्रिंग के लिए पूर्णांक परिवर्तित करने की बजाय पूर्णांक मेरी स्ट्रिंग क्यों की तरह कैसे मैं पहले उदाहरण में वर्णित एक तुलना धर्मान्तरित है।
मुझे समझ नहीं कि तुम मेरी उदाहरण के लिए एक ===
सख्त-तुलना कर सकते हैं, लेकिन मैं सिर्फ जानना चाहता हूँ:
- वहाँ पीएचपी प्रलेखन इस व्यवहार पर उल्लेख के किसी भी भाग है?
- क्या कोई भी स्पष्टीकरण दे सकता है कि PHP में क्यों हो रहा है?
- प्रोग्रामर ऐसी समस्या को कैसे रोक सकते हैं?
== संख्यात्मक तुलना मुझे लगता है, और जब आप लेते हैं और स्ट्रिंग करते हैं और इसे किसी संख्या से बदलते हैं तो यह उस नंबर का उपयोग करता है। अगर यह शायद NaN की तरह कुछ वापस नहीं करता है। – rubixibuc
हम में से अधिकांश उम्मीद करेंगे ....एक पूर्णांक में स्ट्रिंग कास्टिंग करते समय (जैसा कि किसी संख्या के साथ स्ट्रिंग की तुलना करते समय होता है), PHP पहले गैर-अंकीय अंकों पर मुकाबला करता है, इस मामले में 100 (सभी अंक) और "कुछ" के बीच की जगह होती है। एसओ 100 परिणामस्वरूप मूल्य है। –
देखें http://stackoverflow.com/a/8672423 – Gumbo