我遇到過很多occations上的這個php「錯誤」,但我從來沒有停止過關於它的事情。所以這是我要求別人幫我明白這一點:檢查0是否等於任何字符串總是返回true
$int = 0;
var_dump($int == "string");
var_dump(false == "string");
var_dump(false == $int);
我遇到過很多occations上的這個php「錯誤」,但我從來沒有停止過關於它的事情。所以這是我要求別人幫我明白這一點:檢查0是否等於任何字符串總是返回true
$int = 0;
var_dump($int == "string");
var_dump(false == "string");
var_dump(false == $int);
PHP手冊有一個類型Comparison Table它,它給你比較兩個不同的數據類型的變量時,會發生什麼的想法。
您的第一個示例(「鬆散」比較,因爲它不會檢查兩個操作數的數據類型)會將左側的字符串隱式轉換爲整數。由於它不以數字開頭,字符串被轉換爲整數0,它等於整數0.
第二個示例不僅比較了值,還比較了類型。由於類型不同,所以比較是錯誤的。
偉大的答案隊友我會接受這個asap =) – Touchpad
在PHP中,==操作符檢查兩個值相等的 - 換句話說,PHP將使用在需要類型雜耍,但事情好像0 ==假,1 =='1'等將是真實的。
要檢查兩個值是否相同(包括類型),請使用===運算符。
我們使用==
進行寬鬆比較,並使用===
進行嚴格比較。
$int = 0;
var_dump($int === "string"); //false
var_dump(false === "string"); //false
var_dump(false === $int); //false
http://us3.php.net/types.comparisons –
由於發現該網址的回答澄清在這種情況下的答案是:「這是真的,因爲該字符串interally到鑄造一個整數,任何字符串(不是以數字開頭),當被轉換爲一個整數時,將是0.「 – Touchpad
[爲什麼(0 =='Hello')在PHP中返回true?](http://stackoverflow.com/questions/5894350/why-does-0-hello-return-true-in-php) –