首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >php中的Double equals和tripple equals

php中的Double equals和tripple equals
EN

Stack Overflow用户
提问于 2011-12-18 03:49:19
回答 7查看 1.5K关注 0票数 7

我在StackOverflow和谷歌上搜索,都找不到这个问题的答案:

我们是否应该总是在PHP中使用三重相等来进行验证?

例如,我有一个变量:

代码语言:javascript
复制
$x = '1';

if($x == 1)  // will work
if($x === 1) // will not

现在,我的观点是,如果我们需要验证数字字段,如:

if(is_numeric($x) && $x == '1') {将等同于if($x === 1)

既然===也会验证类型,那么我们总是使用===会不会更好呢

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2011-12-18 04:06:50

这完全取决于您正在编写的脚本,没有一个正确的答案。话虽如此,在很多情况下,您还不知道变量的类型(可能用户输入除外)。

这就是我坚持使用==的原因,只有在可能有多种类型的变量时才使用===

==在大多数情况下都很好,如果你不应该使用它,它就不会被发明:)

票数 5
EN

Stack Overflow用户

发布于 2012-04-12 21:52:30

来自http://me.veekun.com/blog/2012/04/09/php-a-fractal-of-bad-design/

==没用。

‣,它不是传递性的。"foo“== TRUE和"foo”== 0…但是,当然,TRUE != 0。

==‣在可能的情况下会转换为数字,这意味着它会在可能的情况下转换为浮点数。因此,大的十六进制字符串(例如,密码散列)有时可能会比较为真,但实际上并非如此。即使是JavaScript也不会这样做。

出于同样的原因,"6“==”6“、"4.2”== "4.20“和"133”== "0133“都是‣。但请注意133 != 0133,因为0133是八进制的。

‣===比较值和类型…除了对象,只有当两个操作数实际上是同一个对象时,===才为真!对于对象,==比较(每个属性的)值和类型,这就是===对所有其他类型所做的事情。什么。

请参阅http://habnab.it/php-table.html

http://phpsadness.com/sad/47

http://developers.slashdot.org/comments.pl?sid=204433&cid=16703529

也就是说,在创建简单表达式时,如果您完全确定类型不是问题,那么根据我的经验,==可以很好地工作。保持警惕就行了。

票数 6
EN

Stack Overflow用户

发布于 2011-12-18 03:56:18

这取决于你想做什么。

考虑到表单中的数据是以字符串形式出现的,==非常方便,因为它可以将表示数字的字符串与数字进行比较,而无需额外的类型转换。

代码语言:javascript
复制
if ($_GET['amount'] == 10) {
    //...
}

所以不,总是使用===并不是更好。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8547487

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档