有兩種不同類型的變量。但是在使用==運算符比較兩個變量的同時,它會返回weired輸出。這個錯誤還是其他一些問題?我很驚訝。 這裏是代碼,PHP - 比較兩種不同類型的變量bug或問題
$a=1000;
$b='1000square';
if($a==$b){
echo "a equal b";
}else{
echo "a not equal b";
}
它輸出:一個等於灣 但預計:不等於b。
任何人都可以解釋一下嗎?
謝謝!
有兩種不同類型的變量。但是在使用==運算符比較兩個變量的同時,它會返回weired輸出。這個錯誤還是其他一些問題?我很驚訝。 這裏是代碼,PHP - 比較兩種不同類型的變量bug或問題
$a=1000;
$b='1000square';
if($a==$b){
echo "a equal b";
}else{
echo "a not equal b";
}
它輸出:一個等於灣 但預計:不等於b。
任何人都可以解釋一下嗎?
謝謝!
有==
和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
是錯誤的,因爲===
也會比較類型。這可能是您正在尋找的操作員。
$b
被強制轉換爲一個號碼,以便它可以是compared到$a
,因此所得$b
(數1000
)將等於$a
。如果要查明兩個變量是否爲相同,而不是等於,則應該使用===
而不是==
。 ===
不是類型轉換,只有返回true
如果兩個變量都是相同類型和相等。
請到這個鏈接,我認爲這將幫助你: -
恭喜,你已經發布了一些代碼,關心分享你的輸出? –
http://php.net/manual/zh/language.operators.comparison.php – Bora