三元运算符中的逻辑错误

时间:2011-10-03 09:21:04

标签: php boolean ternary-operator

有人可以解释一下为什么那个三元运算符会返回第二个选项而不是第一个选项吗?

这是代码:

$token_sid =
    ($user->data['user_id'] == ANONYMOUS &&
     !empty($config['form_token_sid_guests'])) ? $user->session_id : '';

以下是我实际测试的值

$user->data['user_id'] = 36412
ANONYMOUS = 1
$config['form_token_sid_guests'] = 0
$user->session_id = 4c148b664b7284ecb776c0a932ddf008

$token_sid = ''

知道为什么返回空值而不是用户会话ID?

1 个答案:

答案 0 :(得分:2)

$user->data['user_id'] = 36412

不等于

ANONYMOUS = 1

(36412!= 1) 所以第一个“AND”-Condition failes和你的else-“Block”将被评估。