在PHP中始终使用===安全吗?
我是PHP新手,刚刚遇到了一个浪费时间的bug,因为我没有意识到PHP==操作符执行类似于Javascript的类型强制 我知道Douglas Crockford建议不要在Javascript中使用==运算符,而是始终使用===运算符在PHP中始终使用===安全吗?,php,Php,我是PHP新手,刚刚遇到了一个浪费时间的bug,因为我没有意识到PHP==操作符执行类似于Javascript的类型强制 我知道Douglas Crockford建议不要在Javascript中使用==运算符,而是始终使用===运算符 如果我以一种从不采用类型强制的方式编写代码,那么我可以在PHP中使用相同的建议,并且从不使用==运算符吗?始终使用===运算符是否安全,或者是否有我需要注意的问题?默认情况下,您应该使用==(以避免您刚才遇到的问题),并在需要时使用=,以方便起见 例如,您可能从$
如果我以一种从不采用类型强制的方式编写代码,那么我可以在PHP中使用相同的建议,并且从不使用==运算符吗?始终使用===运算符是否安全,或者是否有我需要注意的问题?默认情况下,您应该使用
==
(以避免您刚才遇到的问题),并在需要时使用=
,以方便起见
例如,您可能从
$\u GET
或类似内容获取参数,参数可能是字符串true
或false
,而不是布尔值true
或false
。就我个人而言,我检查了所有内容,但是如果您意识到并小心使用,==
可能存在合法的用例。==
和==
的存在是有特定原因的。正如您在帖子中提到的,==
执行类型强制
我来自强类型编程背景,因此不需要类型强制,就像你一样。在这种情况下,始终使用==
,是安全的
当然,当您确实需要强制时,请使用=
对于无法控制的输入(GET/POST参数、API响应),您可以使用=
或使用强制转换。var\u dump('1'==1)代码>返回bool(true)
和var\u dump('1'==1)
returnbool(false)
,因为它们的值相同,但类型不同。一个是string,另一个是int
如果您知道要检查的类型,请仅使用==
。我已经编写了几个CMS和PHP框架,它们可以完成PHP可以完成的每种类型的操作和数据转换。我仍然使用=
和==
,因为它们解决不同的问题。然而,在现实世界中,===
真的应该被更多地使用。我记不起我上一次实际使用松散比较版本是什么时候了。