Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PHP中始终使用===安全吗?_Php - Fatal编程技术网

在PHP中始终使用===安全吗?

在PHP中始终使用===安全吗?,php,Php,我是PHP新手,刚刚遇到了一个浪费时间的bug,因为我没有意识到PHP==操作符执行类似于Javascript的类型强制 我知道Douglas Crockford建议不要在Javascript中使用==运算符,而是始终使用===运算符 如果我以一种从不采用类型强制的方式编写代码,那么我可以在PHP中使用相同的建议,并且从不使用==运算符吗?始终使用===运算符是否安全,或者是否有我需要注意的问题?默认情况下,您应该使用==(以避免您刚才遇到的问题),并在需要时使用=,以方便起见 例如,您可能从$

我是PHP新手,刚刚遇到了一个浪费时间的bug,因为我没有意识到PHP==操作符执行类似于Javascript的类型强制

我知道Douglas Crockford建议不要在Javascript中使用==运算符,而是始终使用===运算符


如果我以一种从不采用类型强制的方式编写代码,那么我可以在PHP中使用相同的建议,并且从不使用==运算符吗?始终使用===运算符是否安全,或者是否有我需要注意的问题?

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


例如,您可能从
$\u GET
或类似内容获取参数,参数可能是字符串
true
false
,而不是布尔值
true
false
。就我个人而言,我检查了所有内容,但是如果您意识到并小心使用,
==
可能存在合法的用例。
==
==
的存在是有特定原因的。正如您在帖子中提到的,
==
执行类型强制

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

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

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

var\u dump('1'==1)返回
bool(true)
var\u dump('1'==1)
return
bool(false)
,因为它们的值相同,但类型不同。一个是string,另一个是int


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

我已经编写了几个CMS和PHP框架,它们可以完成PHP可以完成的每种类型的操作和数据转换。我仍然使用
=
==
,因为它们解决不同的问题。然而,在现实世界中,
===
真的应该被更多地使用。我记不起我上一次实际使用松散比较版本是什么时候了。