&&
имеет более высокий приоритет , чем =
, поэтому первое выражение оценивается как:
isset($_REQUEST['test']) && $t = (trim($_REQUEST['test']) && !empty($t))
Поскольку !empty($t)
оценивается до того, как что-либо назначено $t
, выражение false
.Вы можете исправить это, явно установив круглые скобки, или используя неуклюжий способ записи:
if (isset($_REQUEST['test']) && trim($_REQUEST['test'])) {
echo 'hi';
}
trim($_REQUEST['test'])
оценивается как true
или false
просто само по себе, без empty
необходимо.Если вам действительно понадобится значение trim
med позже, вы можете сохранить его следующим образом:
if (isset($_REQUEST['test']) && ($t = trim($_REQUEST['test']))) {
echo 'hi';
}