3

我是 PHP 新手,我刚刚遇到了一个浪费时间的错误,因为我没有意识到 PHP == 运算符确实键入了类似于 Javascript 的强制转换。

我知道 Douglas Crockford 建议不要将 == 运算符与 Javascript 一起使用,而始终使用 === 运算符。

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

4

3 回答 3

8

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

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

于 2012-05-08T00:18:26.297 回答
4

==并且===, 由于特定原因而存在。正如您在帖子中已经提到的那样,==类型强制。

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

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

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

于 2012-05-08T00:20:25.193 回答
0

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

===当您知道要检查的类型时才使用。

于 2012-05-08T00:33:15.717 回答