回答
原来,===是有问题的
例如10 === 10将是错误的,如果一个是整数,一个是字符串,即使他们与表单发布可能发生的情况相同。
我使用的解决方案是:
如果( “$ I” == “$ J”)
这样,如果他们是相同的,无论类型,它只是检查
这显示了PHP的相等运算符中的一个误解。 ==检查两个操作数是否相等; 10 ==“10”将返回true。 ===检查两个操作数是否相等,并且是相同类型,因此10 ==“10”将返回false,但是10 === 10将返回true。没有必要在你的'解决方案'中用双引号包装。 – 2012-01-16 09:38:20
我也这么认为。但遇到了一个错误。 x == y给出了错误。添加引号后,它工作。 – 2012-01-16 15:35:49
我不认为这是一个错误,这是由于PHP隐式地转换变量。如果你在命令行运行,你可以看到:'php -r'var_dump((int)'00:15');“'字符串00:15被转换为int(0),然后比较0 0. – 2012-01-16 16:19:40
00:15
先铸成一个整数再与$i
比较。由于intval()
(其执行的是铸造)在第一个非数字字符处停止,因此00:15
被转换为零,该值等于零。这里没有问题,这是==
运营商的工作原理。
如果您想避免投射,请改为使用===
。
使用==
这些类型将在它们进行比较之前进行转换。在这种情况下,两者都将转换为整数,并且当您将非数字字符串转换为整数时,可能会导致0
。
如果您使用===
运算符代替,则会得到您期望的结果。
字符串和INT比喻为INT的,所以$j
转换为0,因为在这里有00
不奇怪的所有启动 - 与整数比较字符串时,第一个被强制转换为整数,然后进行比较。使用===
进行类型检查,你会看到真正的结果
- 1. 有条件的运算符错误
- 2. 带||的语法错误运算符(PHP)
- 3. C++中的条件运算符错误?
- 4. 错误使用条件运算符
- 5. RxJava流:有条件的运算符和错误处理
- 6. JS中的条件运算符 - 语法错误出错
- 7. 与三元运算符的PHP错误?
- 8. 条件运算符
- 9. 条件运算符
- 10. 有和没有条件运算符()
- 11. bash中有条件的运算符
- 12. 有条件运算符的局限性?:
- 13. 运算符==错误
- 14. INT的条件运算符
- 15. 带条件运算符的C#内插字符串
- 16. 带条件运算符的空指针异常(三元运算符),但不与其他运算符
- 17. 由python分割带条件运算符的文本文件
- 18. C#条件运算符:?有可空INT
- 19. TypeScript是否有空条件运算符
- 20. 有效使用条件运算符?
- 21. 如何与多个条件写条件运算符在PHP
- 22. c#空条件运算符
- 23. 空,条件运算符和!=
- 24. 使用条件运算符
- 25. 条件运算符警告
- 26. 条件运算符&& in java
- 27. 条件运算符语法
- 28. Powershell和条件运算符
- 29. 无条件运算符
- 30. C#空值条件运算符错误,并等待
用户'如果($ i === $ j)'而不是'if($ i == $ j)' – Gaurav 2012-01-09 11:29:57