有人可以解释一下建议我,为什么:(如果我将DB字段设置为int,如“1” - 此语句有效,但如果我将其设置为字符串 - 则不起作用。
使用:
if ( $results['page']->pageStatus != 1 ) {
header('Location: 404.html');}
不起作用:
if ( $results['page']->pageStatus !== "active" ) {
header('Location: 404.html');}
答案 0 :(得分:1)
如果您将数字与字符串进行比较或比较涉及数字字符串,则每个字符串都会转换为数字,并且数字会进行比较。这些规则也适用于switch语句。当比较为===或!==时,不会发生类型转换,因为这涉及比较类型和值。
所以当你这样做时(我强烈怀疑$results['page']->pageStatus
的类型为string
):
if ( $results['page']->pageStatus != 1 )
$results['page']->pageStatus
转换为数字。在这种情况下,它将转换为0
。 0 != 1
评估为true
。
答案 1 :(得分:0)
您需要将表达式计算为true或false。将其更改为
if ( !($results['page']->pageStatus == "active") ) {
header('Location: 404.html');}