Я хочу дважды проверить что-то о множественных условиях в логическом выражении if в PHP. Учитывая, что я пишу:
if(!empty($_POST) && !isset($_POST['report_btn'])) {...}
это может быть переписано как
if(! ( empty($_POST) && isset($_POST['report_btn']) ) ) {...}
Я хочу удалить один из восклицательных знаков, чтобы посмотреть, смогу ли я сделать код немного аккуратнее. Логика состоит в том, чтобы увидеть, могу ли я выполнить код, если данные POST были отправлены на страницу, но 'report_btn'
значение не установлено.
Нет, Вы не можете написать вышеуказанное условие как условие ниже:
Причина:
за:
if(! ( empty($_POST) && isset($_POST['report_btn']) ) ) {...}
матрица результатов будет:
first_statement second_statement result
true true false
true false true
false true true
false false true
И для ниже
if(!empty($_POST) && !isset($_POST['report_btn'])) {...}
Матрица результата будет:
first_statement second_statement result
true true false
true false false
false true false
false false true
Это означает, что оба кода не похожи.
Булева логика говорит, что
!A && !B == !(A || B)
!A || !B == !(A && B)
Лучше знать, как правильно преобразовать ваше логическое выражение.
Это хорошо читать о Законы де Моргана который включает в себя ваше дело.
«не (А и В)» означает «(не А) или (не В)»
«не (А или В)» означает «(не А) и (не В)».