#php #boolean #ternary-operator
#php #логическое значение #тернарный оператор
Вопрос:
Может кто-нибудь объяснить мне, почему этот троичный оператор возвращает второй вариант вместо первого?
Это код :
$token_sid =
($user->data['user_id'] == ANONYMOUS amp;amp;
!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 = ''
Есть идеи, почему это возвращает пустое значение вместо идентификатора сеанса пользователя?
Комментарии:
1. Вам следует рассмотреть возможность использования
if
/else
вместо троичного оператора, когда код даже немного сложный, чтобы сохранить его читабельным.
Ответ №1:
$user->data['user_id'] = 36412
не равно
ANONYMOUS = 1
(36412 != 1)
Таким образом, первое условие «И» не выполняется, и ваш else-«Блок» будет оценен.