在PHP中始终使用===是否安全?

时间:2012-05-08 00:17:31

标签: php

我是PHP新手,我只是遇到了浪费一天的错误,因为我没有意识到PHP ==运算符确实类似于Javascript类型强制。

我知道Douglas Crockford建议永远不要使用带有Javascript的==运算符,并始终使用===运算符。

如果我的编码方式从不假定类型强制,我可以在PHP中使用相同的建议,并且从不使用==运算符吗? 总是使用===运算符是安全的,还是我需要注意的问题?

3 个答案:

答案 0 :(得分:7)

默认情况下,您应使用===(以避免遇到的问题)并在需要时使用==,以方便使用。

例如,您可能正在从$_GET或类似参数中获取参数,参数可能是字符串truefalse,而不是布尔值true或{{ 1}}。就个人而言,我会检查所有内容,但如果您意识到这一点,false可能存在合法用例,并且谨慎使用。

答案 1 :(得分:4)

=====因特定原因而存在。正如您在帖子中提到的那样,==会输入强制。

我来自一个强类型的编程背景,因此从不需要类型强制,就像你一样。在这种情况下,始终使用===安全。

当然,当您确实需要强制时,请使用==

如果输入您无法控制(GET / POST参数,API响应),您可以使用==或使用强制转换。

答案 2 :(得分:0)

var_dump('1' == 1);返回bool(true)var_dump('1' === 1);返回bool(false),因为它们具有相同的值但不同的类型。一个是字符串,另一个是int。

如果您知道要检查的类型,请仅使用===