2012-01-20 15 views
7
$check = 'this is a string 111'; 
if ($check = 'this is a string') { 
echo 'perfect match'; 
} else { 
echo 'it did not match up'; 
} 

लेकिन यह यह करने के बजाय सही मैच हर रिटर्न का मिलान नहीं किया ... मैं वास्तव में यह केवल काम करेंगे स्ट्रिंग मामले मिलान करने के लिए प्राप्त करने के लिए नहीं कर पा रहे है, तो स्ट्रिंग मैचों का हिस्सा अप।पीएचपी मैच एक स्ट्रिंग वास्तव में

यदि मैं बोर्ड कोड और रेगेक्स पैटर्न का उपयोग करके चीजों को जटिल करने की कोशिश करता हूं तो यह एक दुःस्वप्न बन जाता है।

if ($check = '/\[quote(.*?)\](.*?)\[\/quote\]/su') { 
$spam['spam'] = true; 
$spam['error'] .= 'Spam post quote.<br />'; 
} 

तो अगर पोस्ट केवल बोली टैग निहित यह स्पैम माना जाएगा और छोड़ दिया, लेकिन मैं हल करने के लिए यह शायद मेरी पैटर्न गलत हैं नहीं कर पा रहे।

+0

अप को कम downvoter! –

+0

+1 क्योंकि यह एक बहुत ही वास्तविक परिणाम/एक भाषा का पतन है जो आपको एक असाइनमेंट से मूल्य वापस करने देता है। – Joe

+0

@RobAgar यह _really_ डिबगिंग 101 है। उपरोक्त हैं, जो आप देख सकते हैं जब ऊपर दिए गए बटन पर होवर करते हैं, "शोध प्रयास दिखाने वाले उपयोगी प्रश्न"। दोनों यहां आवेदन नहीं करते हैं। – CodeCaster

उत्तर

2

आप समानता ऑपरेटर == के बजाय असाइनमेंट ऑपरेटर, = का उपयोग कर रहे हैं।

आप

if ($check == 'this is a string') { 
2

if ($check = 'this is a string')$check चर जो हमेशा परिभाषित है और इस तरह है करने के लिए स्ट्रिंग प्रदान करती है उपयोग करने की आवश्यकता है, हमेशा सच रिटर्न अगर

होना चाहिए if ($check == 'this is a string')

+0

'जिसे हमेशा परिभाषित किया जाता है और इस प्रकार, हमेशा सत्य होता है' - पूरी तरह से सच नहीं। यदि आप 'if ($ check = 0) 'करते हैं तो यह गलत पर मूल्यांकन करेगा। वास्तव में यहां क्या होगा यह है कि PHP अभिव्यक्ति के दाहिने तरफ बूलियन के रूप में मूल्यांकन करेगा। – DaveRandom

+0

सटीक, लेकिन जब तक आप एक खाली खाली स्ट्रिंग असाइन करते हैं, तो यह एक वास्तविक समकक्ष का मूल्यांकन करेगा। – dweeves

+0

... जब तक स्ट्रिंग '0'' – DaveRandom

10

आप उपयोग करने की आवश्यकता == न केवल =

$check = 'this is a string 111'; 
if ($check == 'this is a string') { 
echo 'perfect match'; 
} else { 
echo 'it did not match up'; 
} 

= चर आवंटित करेगा।

== एक ढीला तुलना

=== कर एक सख्त तुलना

अधिक जानकारी के लिए comparison operators देखें क्या करेंगे होगा।

+1

के साथ चीजों को जटिल बनाना शुरू करता हूं, तो यदि आप वास्तव में सटीक होना चाहते हैं, तो सख्त तुलना (' === ') ऑपरेटर, अन्यथा निम्नलिखित सत्य है: 'अगर (' 123 '== 123)' –

+0

धन्यवाद यह मेरी मूल स्ट्रिंग के लिए काम करता है, लेकिन जब मैं regex पैटर्न – C0nw0nk

+0

हाँ के साथ जटिलताओं को जटिल बनाना शुरू करता हूं, तो स्ट्रिंग तुलना का उपयोग करके काम नहीं करेगा regex ... इसके लिए आपको preg_match करना होगा - http://php.net/manual/en/function.preg-match.php – Nick

3

समानता तुलना के लिए आप == ऑपरेटर चाहते हैं। = असाइनमेंट है।

if ($check = 'this is a string') { 

होना चाहिए

if ($check == 'this is a string') { 

चिंता मत करो, हम सब यह किया है। मैं अभी भी करता हूं :)

2

== तुलना ऑपरेटर ज्यादातर मामलों में काम करेगा, लेकिन कुछ किनारे के मामलों में सटीक मिलान करने में विफल रहता है *।

=== ऑपरेटर का उपयोग करना सबसे अच्छा है।

if ($check === 'this is a string') { 

एक उदाहरण जहां == काम करता है अप्रत्याशित रूप से

$check = '2'; 
if ($check == '   2') { 
संबंधित मुद्दे