有人可以解释建议我,为什么:(如果我设置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
是string
类型):
if ( $results['page']->pageStatus != 1 )
$results['page']->pageStatus
转换为数字。在这种情况下,它被转化为0
。0 != 1
求值为true
需要将表达式求值为真或假。改为
if ( !($results['page']->pageStatus == "active") ) {
header('Location: 404.html');}