तुलना ऑपरेटर < <= > >=
स्ट्रिंग के लिए भी लागू किया जा सकता है। तो हमें स्ट्रिंग तुलना के लिए विशेष फ़ंक्शन की आवश्यकता क्यों है: strcmp
?PHP: हमें स्ट्रिंग तुलना फ़ंक्शन की आवश्यकता क्यों है?
उत्तर
क्योंकि वहाँ कई रूप हैं:
समारोह के आधार पर, इन सवालों के जवाब अलग-अलग हो:
- यह केस संवेदी है? (
strcmp
बनामstrcasecmp
,strnatcmp
बनामstrnatcasecmp
) - निर्भर करता है कि यह लोकेल पर निर्भर करता है? (
strcoll
करता है) - क्या मैं एक संयोजन निर्दिष्ट कर सकता हूं? (
strcoll
setlocale
से प्रभावित होता है)
Additionaly, तुलना ऑपरेटर भी true
या false
दे। strcmp
एक पूर्णांक देता है ताकि यह एक साथ एन्कोड कर सके कि पहचान (वापसी 0) है या यदि यह नहीं है, जो बड़ा है (इस पर निर्भर करता है कि मूल्य सकारात्मक या नकारात्मक है या नहीं)।
हालांकि strcmp के लिए PHP में कोई भार के, 3 विभिन्न मूल्यों बराबरी के लिए कम, की तुलना में 0 के लिए -1 और तुलना स्ट्रिंग से अधिक के लिए +1 में strcmp परिणाम नहीं हैं। < = <= > >=
के साथ आपको (कभी-कभी) करने के लिए कई चेक एक के बाद एक होगा।
यह केवल -1, 1 और 0. – Artefacto
नहीं लौटाता है और जब तक कि आप किसी प्रकार की लुकअप टेबल को लागू नहीं करते हैं, तब तक आप सबसे खराब मामले के साथ दो तुलनाओं को समाप्त कर देंगे। – Artefacto
एआरएम, 'strcmp' का उपयोग बहुत अधिक तरीके से किया जाता है, सिवाय इसके कि आप तुलना ऑपरेटर लेते हैं और इसे' 0' पर लागू करते हैं। तो '$ a <$ b'' strcmp ($ a, $ b) <0' बन जाता है - वही '==',' <=', '> 'और '> =' के लिए जाता है। – Joey
मैंने अनुमान लगाया होगा कि आप उस फ़ंक्शन में स्वयं का तुलनित्र या लोकेल प्रदान कर सकते हैं ... लेकिन नहीं, यह बाइनरी-सुरक्षित होने के बावजूद केवल सादा पुराना सी लाइब्रेरी फ़ंक्शन है। तो हो सकता है कि PHP को पोर्टिंग सी कोड को कम करने के लिए ... क्योंकि यह स्पष्ट रूप से हर समय होता है। – Joey