Alexanevsky
@Alexanevsky
Любительская web-разработка

Как работает if / else в php?

Есть две переменные $first и $second, содержащие значения 0 или 1.
if ( $first OR $second ) {
   // Условие выполняется
} else {
   // Условие не выполняется
}

Здравый смысл (и результаты гугла, кстати, тоже) мне подсказывает, что условие выполняется ЛИБО если $first == 1, а $second == 0, либо наоборот.

Но практика показывает, что условие выполняется, даже если обе переменные равны единице. Т.е. выполняется, не тогда, когда СТРОГО одно из них равно единице, а ЕСЛИ ХОТЯ БЫ одно.

В чём подвох?
  • Вопрос задан
  • 676 просмотров
Решения вопроса 4
DevMan
@DevMan
нет подвоха: 1 or 1 = 1, то есть true.
если нужно строго проверять, то используется and или xor.
Ответ написан
То что подсказывает ваш здравый смысл называется XOR.
Ответ написан
Комментировать
Winsik
@Winsik
сис.админ, недопрограммист :)
давайте заменим OR на "+" , так понятнее стало ?
заменяйте or на ||

UPD:
перечитал вопрос после 9 комментария к своему ответу, после этого только понял сам вопрос )))
Если переменная Fitst равно 1 ИЛИ переменная SECOND = 1, но другая переменная равна 0 то ... действие.
В вашем случае надо писать if ($f&&!$s||!$f&&$s) (не гарантирую результат, уже сплю ))) , я бы написал так: ($f xor $s) , то есть если значения разные, то что то делаем )))
Ответ написан
@webdeveloper48
Условие выполняется если $first || $second == true
То есть если ОДНа из двух переменных true то условие выполняется
Проще говоря если $first = 0 и $second = 0 то не выполнится
если $first =1 и $second =1 то выполнится,так как после 1 го найденого true значения исполняется код.
На примере вашего кода :
$first = 1;
$second = 1;
//ЕСЛИ $first == 1 то исполняется условие и $second уже не проверяется
//ЕСЛИ $first == 0 то проверяется второе значение $second == 1 то исполняется условие,так как одно из двух условий true
//Если $first == 0 и $second ==0 то условие не выполняется,так как ни одно из условий не true
if ( $first OR $second ) {
   // Условие выполняется
} else {
   // Условие не выполняется
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы