PHP中'eq'与'=='的区别是什么?

时间:2009-12-07 08:32:38

标签: php string operators equality

首先,我尝试在StackOverflow和google中搜索我为这个问题提出的标题的不同变体。我找不到解决方案。

我对php很新。足够新,不知道使用eq==进行字符串比较之间的区别!

我通常使用==来比较PHP中的字符串。我很满意。

但是我看到使用eq来比较字符串的代码。我隐约记得有人在做'哦!我使用==来比较字符串。我应该使用eq'

我只是想知道使用==是否可以进行简单的字符串比较?我不是在讨论特殊情况,区分大小写,子字符串或任何花哨类型的字符串比较。只需检查apple是否与apple相同。

==是否足够?或者我应该使用eq


编辑:

我的错误:(非常感谢我清除'未经过充分研究'的疑问!它一定是Perl。我很困惑地看到嵌入HTML中的代码并认为这是嵌入PHP的另一种方式。抱歉。

5 个答案:

答案 0 :(得分:11)

PHP中没有eq运算符。但是有=====

===是一个严格的比较运算符,不会进行类型转换。

==会进行类型转换(例如'' == 0评估为true)。

有关完整列表,请参阅Comparison Operators,有关PHP类型转换的规则,请参阅Type Juggling。我可以找到eq的唯一参考是作为version_compare()的参数。

答案 1 :(得分:6)

伴随我的评论: Perl 中的eq运算符测试字符串是否相等,而==测试数字< / strong>仅限平等。

尽管PHP作为Perl脚本的集合启动了一次,我不认为,他们已经复制了这个运算符,this page似乎同意。

答案 2 :(得分:2)

PHP没有eq operator。您可能正在考虑使用perl,其中eq将两个变量作为字符串进行比较。

PHP有一个相等运算符(==)和一个真正的相等运算符(===)。真正的相等运算符(===)将测试运算符每一侧的表达式是否相等,且类型相同。等于运算符(==)将尝试将每个表达式强制转换为相同的类型,然后进行比较。

//this is true
'45' == 45

//this is false
'45' === 45

在某些情况下,==会在类型方面做出错误的猜测,如果你知道你有相同类型的两个表达式,那么最好使用===

答案 3 :(得分:1)

==运算符检查两个变量,文字或这两个程序实体的组合之间是否存在完美匹配......但不是类型安全的!

如果您使用它来比较字符串,则将字符串与正则表达式进行比较以找到完美匹配!

但是有很多最强大的方法来比较PHP中的字符串,你只需要知道你想要完成什么......例如:similar_text()strcasecmp(),{{1或者你可以通过使用自己的模式调用其中一个函数strcmp()ereg()来使用正则表达式来比较字符串!

答案 4 :(得分:0)

PHP中的

eq对我来说是新闻,但有严格的比较运算符

$a === $b

查看the manual了解详情。