вот мой первый вопрос (и) о StackOverflow, и я думаю, что это так имеет меня уже спрашивали здесь, но все, что я печатаю в строке поиска, вызывает у меня разные вопросы. (Или иногда «нет» результатов вообще!)
Я учусь на w3Schools, но я увидел этот, казалось бы, простой фрагмент кода, который всколыхнул небольшой пакет вопросов:
По сути код говорит:
if(! test === FALSE)
display("test successful!");
else
display("test failed...")
«тестовое задание«в этом конкретном случае возвращает строку в случае успеха или (булево) ЛОЖНЫЙ при неудаче.
Вот вопросы, которые волновали меня.
Что касается восклицательного знака (он же «Логическое НЕ» или «Оператор отрицания») в начале условного оператора / if, то это:
А) Применимо ко всему утверждению в скобках? Или
Б) Связано только с «тестом»?
Примечание: ассоциативность оператора отрицания может не изменить результат в этом случае, но его ассоциативность будет иметь значение в случае, подобном: (! FALSE || TRUE), да?
Я понимаю, как оператор отрицания работает с логическими значениями, но как ведет себя оператор отрицания, когда сталкивается со строкой (PHP)?
A) Изменится ли поведение оператора отрицания, если строка окажется чем-то хитрым, например, «true» или «0»?
Является (! 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 ()?
Как вы можете видеть в доктор Операторы в PHP имеют разные приоритеты. Это значит:!
применительно к $test
первый.
Согласно доктор, пустой строки ''
или же '0'
будет преобразован в false
, иначе true
,
Это не то же самое. когда $test
равно пустой строке ''
или же '0'
эти два условия имеют разное поведение.
Других решений пока нет …