首先,我尝试在StackOverflow和google中搜索我为这个问题提出的标题的不同变体。我找不到解决方案。
我对php很新。足够新,不知道使用eq
和==
进行字符串比较之间的区别!
我通常使用==
来比较PHP中的字符串。我很满意。
但是我看到使用eq
来比较字符串的代码。我隐约记得有人在做'哦!我使用==
来比较字符串。我应该使用eq
'
我只是想知道使用==
是否可以进行简单的字符串比较?我不是在讨论特殊情况,区分大小写,子字符串或任何花哨类型的字符串比较。只需检查apple
是否与apple
相同。
==
是否足够?或者我应该使用eq
。
编辑:
我的错误:(非常感谢我清除'未经过充分研究'的疑问!它一定是Perl。我很困惑地看到嵌入HTML中的代码并认为这是嵌入PHP的另一种方式。抱歉。
答案 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)