我在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)
既然===也验证了类型,如果我们总是使用它会更好===吗?
来自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://developers.slashdot.org/comments.pl?sid=204433&cid=16703529
话虽这么说,当你完全确定在创建简单表达式时类型不是问题,==在我的经验中运作良好.请保持警惕.
这完全取决于你写的剧本,没有一个正确的答案.话虽如此,您并不知道变量的类型(可能除了用户输入之外)的情况并不多.
这就是我坚持使用的原因==,只有===在可能有多种类型的变量时才使用.
在==大部分时间,它不会被如果你不应该使用它发明是好的:)
| 归档时间: |
|
| 查看次数: |
1501 次 |
| 最近记录: |