2016-08-03 56 views
-2

在開發一個PHP應用程序時,我遇到了這個奇怪的怪癖。爲什麼「01」==「1」,「000333」==「333」等是真的?

顯然,字符串'01' == '1','05' == '5','03111' == '3111'。 我想這 -

php > $numbers = ["1", "2", "3", "4", "5"]; 
php > in_array("01", $numbers); 
true 
php > var_dump("01" == "1"); 
true 
php > var_dump("00003333" == "3333") 
true 

如何防止這種情況(即針對in_array調用返回false),以及爲什麼它擺在首位發生?

+0

使用3等號''=== PHP – 123

+0

的手冊中有一些指引變量類型及其在比較中的作用。 http://php.net/manual/en/language.operators.comparison.php –

+0

僅供參考:'in_array()'在默認情況下做了比較鬆散的比較,所以它與'=='基本相同,同樣的原因,它以同樣的方式工作。它也是使用'=='和'in_array()'解決它的相同解決方案,只是使用相同的比較。 – Rizier123

回答

0

你應該使用in_array

in_array("01", $numbers, true); 

和嚴格的比較,而不是=== == 那麼PHP也比較類型

相關問題