三元运算符逻辑错误
问题描述:
有人可以解释为什么三元运算符返回第二个选项而不是第一个?三元运算符逻辑错误
这是代码:
$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值是多少?
答
$user->data['user_id'] = 36412
不等于
ANONYMOUS = 1
(36412!= 1) 所以第一 “和” -condition failes和你else- “块” 进行评估。
当代码有点复杂时,为了保持可读性,你应该考虑使用'if' /'else'来代替三元运算符。 – rid