PHP变量int和string,正确使用什么

时间:2013-03-08 22:10:42

标签: php operators int

有人可以解释一下建议我,为什么:(如果我将DB字段设置为int,如“1” - 此语句有效,但如果我将其设置为字符串 - 则不起作用。

使用:

if ( $results['page']->pageStatus != 1 ) {
header('Location: 404.html');}

不起作用:

if ( $results['page']->pageStatus !== "active" ) {
header('Location: 404.html');}

2 个答案:

答案 0 :(得分:1)

根据documentation

  

如果您将数字与字符串进行比较或比较涉及数字字符串,则每个字符串都会转换为数字,并且数字会进行比较。这些规则也适用于switch语句。当比较为===或!==时,不会发生类型转换,因为这涉及比较类型和值。

所以当你这样做时(我强烈怀疑$results['page']->pageStatus的类型为string):

if ( $results['page']->pageStatus != 1 )

$results['page']->pageStatus转换为数字。在这种情况下,它将转换为00 != 1评估为true

答案 1 :(得分:0)

您需要将表达式计算为true或false。将其更改为

if ( !($results['page']->pageStatus == "active") ) { header('Location: 404.html');}