2013-08-26 93 views
1

有兩種不同類型的變量。但是在使用==運算符比較兩個變量的同時,它會返回weired輸出。這個錯誤還是其他一些問題?我很驚訝。 這裏是代碼,PHP - 比較兩種不同類型的變量bug或問題

$a=1000; 
$b='1000square'; 
if($a==$b){ 
    echo "a equal b"; 
}else{ 
    echo "a not equal b"; 
} 

它輸出:一個等於灣 但預計:不等於b。

任何人都可以解釋一下嗎?

謝謝!

+0

恭喜,你已經發布了一些代碼,關心分享你的輸出? –

+0

http://php.net/manual/zh/language.operators.comparison.php – Bora

回答

1

==和PHP ===之間的差異。請參閱文檔:http://dk1.php.net/manual/en/language.operators.comparison.php

在聲明中$a==$b會發生什麼事是,PHP需要決定如何比較$a$b。由於至少有一個操作數($a)是一個數字,PHP使用數字比較而不是字符串比較。因此$b被轉換爲一個數字。在PHP中,字符串'1000square'轉換爲數字1000.這就是爲什麼您的代碼顯示$a==$b爲真。

但是,$a===$b是錯誤的,因爲===也會比較類型。這可能是您正在尋找的操作員。

2
$b

被強制轉換爲一個號碼,以便它可以是compared$a,因此所得$b(數1000)將等於$a。如果要查明兩個變量是否爲相同,而不是等於,則應該使用===而不是=====不是類型轉換,只有返回true如果兩個變量都是相同類型相等。