为什么“01”==“1”,“000333”==“333”等真实?

时间:2016-08-03 13:26:13

标签: php string-comparison

在开发PHP应用程序时,我遇到了这个奇怪的怪癖。

显然,字符串'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),为什么它首先发生?

1 个答案:

答案 0 :(得分:0)

您应该在in_array

中使用严格比较
in_array("01", $numbers, true);

和===而不是== 然后php比较类型