我有
echo $role;
if (!$role=='trial_expired') { echo 'not expired '; } else { echo 'expired '; }
$ Role输出'trial',这是根据数据库的正确用户角色,但是后面的条件仍然返回false,返回'expired'。出于某种原因,'试用'(我的猜测因为它部分是'trial_expired')被视为与trial_expired相同。我可以通过哪些操作员来解决问题?
答案 0 :(得分:5)
您将!
逻辑运算符置于错误的位置。要比较字符串不是否相等,您需要将!
运算符放在相等比较器左侧(==
)。
if ($role!=='trial_expired') { echo 'not expired '; } else { echo 'expired '; }
答案 1 :(得分:1)
叫我疯了,但trial
与trial_expired
不一样。 PHP明确同意我的意见
答案 2 :(得分:1)
这种情况没有意义:
if (!$role=='trial_expired') {echo 'not expired '; } else { echo 'expired '; }
如果要检查某个值是否相等,可以使用!=
执行此操作:
if ($role != 'trial_expired') {echo 'not expired '; } else { echo 'expired '; }
此外,您应该以这种方式格式化条件:
if ($role != 'trial_expired') {
echo 'not expired ';
}
else {
echo 'expired ';
}
答案 3 :(得分:0)
为什么会发生这种情况?表达式
!$role=='trial_expired'
被解析为以下内容,看起来应该看起来不正确。
(!$role) == 'trial_expired'
要么在其他地方建议更改,要么使用括号来否定所需的表达式。
!($role == 'trial_expired')