三元运算符逻辑错误

三元运算符逻辑错误

问题描述:

有人可以解释为什么三元运算符返回第二个选项而不是第一个?三元运算符逻辑错误

这是代码:

$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值是多少?

+2

当代码有点复杂时,为了保持可读性,你应该考虑使用'if' /'else'来代替三元运算符。 – rid

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

不等于

ANONYMOUS = 1 

(36412!= 1) 所以第一 “和” -condition failes和你else- “块” 进行评估。