-1

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

作品:

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

不起作用:

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

2 回答 2

1

根据文档

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

所以当你这样做时(我强烈怀疑它$results['page']->pageStatus是 type string):

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

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

于 2013-03-08T22:16:27.087 回答
0

您需要将表达式评估为真或假。将其更改为

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

于 2013-03-08T22:22:09.700 回答