我想知道是否有任何理由转换我的变量,这是从MySQL返回的字符串,作为一个int。我正在更新一些代码,netbeans希望我使用===而不是==。问题在于===不仅关心类型,也关心内容。
我有:if($user['user_state']==1){...}
所以改成:if($user['user_state']==="1"){...}
或者我可以这样做:if((int)$user['user_state']===1){...}
对于我来说,是整型还是str都没有区别,我当然不会对这个特定的变量做任何数学运算。既然我在任何情况下都必须重写条件语句,我宁愿用正确的方式来做。
所以,我想我的问题是什么是最佳实践?或者这个问题的答案会像单引号和双引号一样终结幸福的婚姻?
Netbeans建议这样做的潜在原因可能是:
"1abc" == 1 // true
通过应用(int)
强制转换和使用===
来加强比较将满足编辑器和纯粹主义者,但是由于您通常信任您的数据库模式,因此没有必要使用上述强制转换,您可以使用松散的比较。
总而言之,尽管严格比较通常是一种很好的做法,但在处理外部数据(如数据库和(在较小程度上)发布的数据)时,通常被认为过于热心。
也就是说,让Netbeans以一种明智的方式忽略这些"问题"仍然是一个问题;在代码中乱放特殊指令也不是一个好情况。