2009-05-14 11 views
5

मैं थोड़ी देर के लिए PHP में प्रोग्रामिंग कर रहा हूं लेकिन मैं अभी भी == और === के बीच अंतर को समझ नहीं पा रहा हूं। मुझे पता है कि = असाइनमेंट है। और == बराबर है। तो === का उद्देश्य क्या है?=== PHP में क्या करते हैं

उत्तर

26

करता है। ! == जो तुलना प्रकार और मूल्य असमानता

if("45" !== 45) //true 
if(45 !== 45) //false 
if(0 !== false)//true 

यह strpos जैसे कार्यों के लिए विशेष रूप से उपयोगी है - जो 0 वैध लौट सकते हैं:

if("45" === 45) //false 
if(45 === 45) //true 
if(0 === false)//false 

यह एक अनुरूप है।

strpos("hello world", "hello") //0 is the position of "hello" 

//now you try and test if "hello" is in the string... 

if(strpos("hello world", "hello")) 
//evaluates to false, even though hello is in the string 

if(strpos("hello world", "hello") !== false) 
//correctly evaluates to true: 0 is not value- and type-equal to false 

Here's a good wikipedia table अन्य भाषाओं ट्रिपल बराबर करने के लिए एक सादृश्य है कि लिस्टिंग।

+0

स्ट्रॉप्स के मामले में, "झूठी"/"सत्य" टिप्पणियां बहुत स्पष्ट नहीं हैं, लेकिन मुझे लगता है कि आप इसे संदर्भ में पर्याप्त रूप से समझ सकते हैं। – luiscubal

+0

इसके अलावा, परिणामों के कारण टॉम बताते हैं, वापसी मूल्यों का मूल्यांकन करते समय === या! == का उपयोग करना लगभग हमेशा बेहतर होता है। भले ही फ़ंक्शन वर्तमान में एक संदिग्ध मूल्य नहीं लौटाता है, जो भविष्य में बदल सकता है। –

+0

@luiscubal - मैंने स्पष्ट किया। –

4

यह अगर डेटाप्रकार एक ही है और साथ ही मूल्य है की जाँच करेगा

if ("21" == 21) // true 
if ("21" === 21) // false 
3

=== मूल्य और प्रकार है।

2

== प्रकारों की तुलना नहीं करता है, === करता है।

0 == false 

सही का आकलन लेकिन

0 === false 

यह दोनों मूल्य की तुलना और समानता टाइप नहीं

0

यह एक वास्तविक समानता तुलना है।

"" == False उदाहरण के लिए true है।

"" === Falsefalse

12

यह सच है कि === दोनों मूल्य और प्रकार की तुलना करता है, लेकिन वहाँ एक मामले जो अभी तक का उल्लेख नहीं किया गया है और वह यह है कि जब आप == और साथ वस्तुओं की तुलना === ।

को देखते हुए निम्नलिखित कोड:

class TestClass { 
    public $value; 

    public function __construct($value) { 
    $this->value = $value; 
    } 
} 

$a = new TestClass("a"); 
$b = new TestClass("a"); 

var_dump($a == $b); // true 
var_dump($a === $b); // false 

वस्तुओं के मामले में === संदर्भ तुलना, टाइप करें और मूल्य नहीं ($ एक और $ ख दोनों बराबर प्रकार और मूल्य के हैं के रूप में)।

6

PHP मैनुअल में a couple of very nice tables ("==" के साथ लूज तुलना और "=== "के साथ सख्त तुलना) जो दिखाती है कि परिणाम == और === विभिन्न चर प्रकारों की तुलना करते समय क्या देगा।

0

न्यूनतम रूप से, === == से तेज़ है क्योंकि कोई ऑटोमैटिक कास्टिंग/कोयर्सन नहीं चल रहा है, लेकिन इसकी न्यूनतम संख्या इसका उल्लेखनीय रूप से उल्लेखनीय है। (बेशक, मैंने अभी इसका उल्लेख किया है ...)

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