将其转换为int或将其保留为string


Cast as int or leave as string?

我想知道是否有任何理由转换我的变量,这是从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以一种明智的方式忽略这些"问题"仍然是一个问题;在代码中乱放特殊指令也不是一个好情况。