在PHP中,双等于和三等于等于

Ken*_*Ken 7 php

我在StackOverflow和Google上搜索过,但我找不到这个问题的答案:

我们是否应该始终使用PHP中的三元组进行验证?

例如,我有一个变量:

$x = '1';

if($x == 1)  // will work
if($x === 1) // will not
Run Code Online (Sandbox Code Playgroud)

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

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

既然===也验证了类型,如果我们总是使用它会更好===吗?

Ale*_*lex 6

来自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

话虽这么说,当你完全确定在创建简单表达式时类型不是问题,==在我的经验中运作良好.请保持警惕.


Dra*_*cir 5

这完全取决于你写的剧本,没有一个正确的答案.话虽如此,您并不知道变量的类型(可能除了用户输入之外)的情况并不多.

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

==大部分时间,它不会被如果你不应该使用它发明是好的:)