2011-05-09 11 views
12

पर तुलना मैं बहुत यकीन है कि यह मेरी newb पीएचपी ज्ञान में एक साधारण मौलिक दोष है हूँ, लेकिन मैं हैरान था जब निम्नलिखित हुआ:स्ट्रिंग एक bool

enter image description here

$resultTRUE है ... तो इसे "ईमेल" स्ट्रिंग के बराबर क्यों माना जाता है? मुझे लगता है कि यह इसलिए है क्योंकि, तकनीकी रूप से, यह bool है और यह गलत नहीं है? तो जब इसकी तुलना किसी स्ट्रिंग (जैसे "ईमेल") से की जाती है तो यह सच हो जाती है।

क्या मुझे string के परिणामस्वरूप "सत्य" (सफलता पर return true; की बजाय) के रूप में परिणाम के रूप में लौटने के लिए अपनी विधि बदलनी चाहिए, या क्या ऐसा कोई और तरीका है जो मुझे करना चाहिए?

धन्यवाद।

+1

कृपया सिर्फ एक स्क्रीनशॉट के बजाय अपने कोड पेस्ट करें। – TJHeuvel

+2

@TJ, मैंने स्क्रीनशॉट पोस्ट करने का कारण यह है क्योंकि यह '$ परिणाम' की सामग्री दिखाता है, और यह भी कि यह सशर्त परीक्षण पास करता है। इसके अलावा यह सचमुच कोड की तीन पंक्तियां हैं। –

+0

एएच! यह मेरा कोड प्रोग्रामिंग के नियमों के खिलाफ नहीं जा रहा है, यह सिर्फ PHP है! –

उत्तर

14

हाँ, true एक गैर खाली स्ट्रिंग के बराबर (==) है। समान नहीं (===) हालांकि।

मैं तुम्हें type comparison table अवलोकन सुझाव देते हैं।

+0

उत्कृष्ट के बजाय स्ट्रिंग तुलना फ़ंक्शन का उपयोग करें। बहुत बहुत धन्यवाद। पहचान –

+0

+1 पूरी तरह से सही नहीं है! खाली स्ट्रिंग ("") और स्ट्रिंग शून्य ("0") को गलत माना जाता है। बाकी सभी सत्य हैं! –

+0

का उल्लेख करने के लिए –

1

if($result === "email") चाल करना होगा, लेकिन व्यक्तिगत रूप से मैं इस तरह से जाना कभी नहीं होगा।

+0

आप किस तरह से सुझाव देंगे? –

+0

आप कभी इस तरह क्यों नहीं जाएंगे? – meze

+0

व्यक्तिगत रूप से मैं 2 चर के साथ जाऊंगा। एक वैध परिणाम के लिए, एक पूर्व परिभाषित त्रुटि के लिए दूसरा। कोड पठनीयता में सुधार करता है, लेकिन मुझे लगता है कि यह पूरी तरह से व्यक्तिगत कोडिंग शैली है। इस एनोटेशन को छोड़ देना चाहिए था। – DanielB

3

यह सच रिटर्न क्योंकि php उनकी तुलना करने में सक्षम हो के लिए कुछ बदलने की कोशिश करेंगे। इस मामले में यह संभवतः स्ट्रिंग को दाईं तरफ एक बूल में बदलने की कोशिश करता है जो इस मामले में सच होगा। और सच == सच सच है।

$ परिणाम === "email" (ट्रिपल =) ऐसा करने से आप PHP कि यह रूपांतरण करना shoudn't और झूठे लौटना चाहिए अगर प्रकार से मेल नहीं खाते बताओ।

संबंधित मुद्दे