Логическое логическое отрицание оператора приоритета и ассоциации
Вот мой первый вопрос (и) о Stackru, и я думаю, что он уже задавался здесь раньше, но все, что я ввожу в строку поиска, вызывает у меня разные вопросы. (Или иногда "нет" результатов вообще!)
Я учусь в w3Schools, но я увидел этот, казалось бы, простой фрагмент кода, который всколыхнул небольшой пакет вопросов:
По сути код говорит:
if(! test === FALSE)
display("test successful!");
else
display("test failed...")
"test" в данном конкретном случае возвращает строку в случае успеха или (Boolean) FALSE в случае ошибки.
Вот вопросы, которые волновали меня.
Что касается восклицательного знака (он же "Логическое НЕ" или "Оператор отрицания") в начале условного оператора if, то это:
А) Применимо ко всему утверждению в скобках? Или
Б) Связано только с "тестом"?
Примечание: ассоциативность оператора отрицания может не изменить результат в этом случае, но его ассоциативность будет иметь значение в случае, подобном: (! FALSE || TRUE), да?
Я понимаю, как оператор отрицания работает с логическими значениями, но как ведет себя оператор отрицания, когда сталкивается со строкой (PHP)?
A) Изменится ли поведение оператора отрицания, если строка окажется чем-то хитрым, например, "true" или "0"?
Является ли (! Test === FALSE) тем же, что и (test! == FALSE)? Почему они просто не использовали "!=="?
ЗДЕСЬ актуальный код:
if (!filter_var($email, FILTER_VALIDATE_EMAIL) === false) {
echo("$email is a valid email address");
} else {
echo("$email is not a valid email address");
}
Еще один вопрос PHP: есть ли какое-то преимущество использования filter_var() по сравнению с filter_input() в этом случае? Почему w3Schools использует filter_var(), а не filter_input()?
1 ответ
Как вы можете видеть в документах операторы в PHP имеют разные приоритеты. Это значит:
!
применительно к$test
первый.Согласно документу, пустая строка
''
или же'0'
будет преобразован вfalse
, иначеtrue
,Это не то же самое. когда
$test
равно пустой строке''
или же'0'
эти два условия имеют разное поведение.