作为int转换或保留为字符串?

时间:2014-03-10 02:05:36

标签: php mysqli

我想知道是否有任何理由将我的变量(从MySQL作为字符串返回)转换为int。我正在更新一些代码,netbeans希望我使用===而不是==。问题是===关注内容和关于类型的内容。

我有:if($user['user_state']==1){...}

所以我将其更改为:if($user['user_state']==="1"){...}

或者我可以这样做:if((int)$user['user_state']===1){...}

如果我有一个int或str,它对我没有任何影响。我肯定不会对这个特定的变量做任何数学运算。因为无论如何我都要重写我的条件,我宁愿以正确的方式去做。

所以,我认为我的问题是什么是最佳做法?或者这是一个很好的问题,其答案将结束单身与双引号等幸福婚姻?

1 个答案:

答案 0 :(得分:4)

Netbeans建议这样的事情的根本原因很可能是:

"1abc" == 1 // true

通过应用(int)强制转换并使用===来加强比较将满足编辑和纯粹主义者的要求,但由于您通常会信任您的数据库架构,因此上述强制转换不是必需的,您可以而是使用松散的比较。

总而言之,虽然严格的比较通常是一种很好的做法,但在处理外部数据(如数据库)和(在较小程度上)发布数据时,通常会认为这种做法过于热心。

尽管如此,它仍然让Netbeans以合理的方式忽视这些“问题”;在代码中散布特殊说明也不是很好。