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