1 回答
TA贡献1890条经验 获得超9个赞
“===”和“!==”比较运算符断言两件事:
值相等,并且
这些值属于同一类型
对您的问题“将 !== 与 strcmp 函数一起使用有什么意义”的简短回答只是“这是一种很好的做法”。这确实是具体关于 strcmp 的唯一原因,并且 != 在涉及该功能时会给您完全相同的结果。
长答案如下:
PHP 传统上是一种松散类型的语言。也就是说,数据类型并不是那么重要,PHP 会自动为您隐式转换类型。默认情况下它仍然这样做(尽管近年来已经添加了很多东西来改善这种情况)。例如,如果将字符串“1”添加到整数 1,PHP 会自动将字符串转换为整数并返回整数值 2。如果您尝试这样做,强类型语言将返回错误。另一个例子是 PHP 会将 0 转换为布尔值 false,并将任何其他非零值转换为布尔值 true。
正是第二个示例导致某些 PHP 内置函数出现问题。例如,strpos() 函数。如果您查看strpos 的文档页面,您会在“返回值”部分看到一个很大的“警告”,指出“此函数可能返回布尔值 FALSE,但也可能返回一个计算结果为 FALSE 的非布尔值”。出于这个原因,它建议您使用“===”运算符来确保您获得了您期望的准确值和类型。所以“=== 0”表示在输入的开头找到了字符串,“=== false”表示没有找到字符串。如果你只是使用“== false”你就不会
因此,开发人员养成了使用“===”和“!==”来测试相等性和类型的习惯。这是一个好习惯。
由于 strcmp 总是返回一个整数,并且您总是将它与一个整数进行比较,因此没有隐式转换,因此不需要比较类型和相等性。
- 1 回答
- 0 关注
- 114 浏览
添加回答
举报