Ben bir süre için PHP programlama olmuştur ama ben hala == ve === arasındaki farkı anlamıyorum. I = atama olduğunu biliyorum. Ve == olduğunu eşittir. Yani === amacı nedir?
Bu değer ve hem de tip eşitlik karşılaştırır.
if("45" === 45) //false
if(45 === 45) //true
if(0 === false)//false
! == Türü ve değeri eşitsizliği karşılaştırır: Bu bir analog vardır
if("45" !== 45) //true
if(45 !== 45) //false
if(0 !== false)//true
Bu strpos gibi işlevler için özellikle yararlıdır - 0 geçerli olarak dönebilirsiniz.
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 üçlü-eşitlerine bir benzetme olan diğer dilleri listeleme.
Bu === değeri ve tipi hem de karşılaştırır olduğu doğrudur, ancak henüz söz ve == ve === nesneleri karşılaştırmak zaman olduğunu henüz bir durum vardır.
Aşağıdaki kodu verildi:
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
Nesnelerin durumunda === (as $ a ve $ b eşit türü hem de değer olarak) yazın ve değer değil, referans karşılaştırır.
PHP kılavuzu çeşitli değişken tipleri karşılaştırırken verecek ne sonuç == ve === gösteriyor ki a couple of very nice tables ("== ile gevşek karşılaştırmalar" ve "=== ile sıkı karşılaştırmalar") vardır.