为什么我的变量匹配错误的if()条件?

时间:2014-06-17 19:14:32

标签: php conditional-statements operator-keyword

我有

echo $role;

if  (!$role=='trial_expired') { echo 'not expired '; } else { echo 'expired '; }

$ Role输出'trial',这是根据数据库的正确用户角色,但是后面的条件仍然返回false,返回'expired'。出于某种原因,'试用'(我的猜测因为它部分是'trial_expired')被视为与trial_expired相同。我可以通过哪些操作员来解决问题?

4 个答案:

答案 0 :(得分:5)

您将!逻辑运算符置于错误的位置。要比较字符串是否相等,您需要将!运算符放在相等比较器左侧(==)。

if ($role!=='trial_expired') { echo 'not expired '; } else { echo 'expired '; }

答案 1 :(得分:1)

叫我疯了,但trialtrial_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')