应该在字符串中使用严格的比较吗?

Ali*_*xel 1 php string comparison strict string-comparison

我知道,例如,使用:

if (in_array('...'), array('.', '..', '...') === true)
Run Code Online (Sandbox Code Playgroud)

过度:

if (in_array('...'), array('.', '..', '...') == true)
Run Code Online (Sandbox Code Playgroud)

可以提高性能并避免一些常见错误(例如1 == true),但是我想知道是否有理由对字符串使用严格的比较,例如:

if ('...' === '...')
Run Code Online (Sandbox Code Playgroud)

似乎做的完全相同:

if ('...' == '...')
Run Code Online (Sandbox Code Playgroud)

如果有人可以为这个主题带来一些启示,我很感激.

Amb*_*ber 7

如果您知道这两个值的保证是字符串,然后=====是相同的,因为两者之间的唯一区别是,===检查是否该类型是一样的,不只是有效的值.

但是,在某些情况下,您不确定某个值是否为字符串 - 例如,使用$ _GET和$ _POST变量之类的值.考虑以下:

$_GET['foo'] == ""
Run Code Online (Sandbox Code Playgroud)

上述表达式的值为true,如果foo是通过在一个空字符串,但如果它也将评估为真没有价值是为传递foo在所有.相反,

$_GET['foo'] === ""
Run Code Online (Sandbox Code Playgroud)

如果显式传入空字符串,则只会求值为true - 否则值$_GET['foo']可能等于空字符串,但类型不会,因为它实际上是该索引的空值,而不是字符串.