PHP условие: двойной && амперсант “и” и двойной || “или”
Метки: php, php условие, двойное условие php, условия и или
Пишу как заметку новичку, т.к. у самого были сомнения (php меня не учили, всё сам).
Так вот, в чем разница между двойным “и” амперсантом, или двойным “или”?
Грубо говоря, PHP условие: двойной && амперсант “и” и двойной || “или”,
говорит о том, что нужно проверять условия поочередно.
Т.е., допустим у Вас есть “условие1″ и “условие2″.
В итоге, если написать:
//первый вариант if($uslovie1 & $uslovie2){...} //второй вариант if($uslovie1 && $uslovie2){...}
То, в первом случае, скрипт проверит первое условие, затем второе, затем посмотрим – оба ли они TRUE и решит что делать.
Во втором случае, т.е. ДВОЙНОМ, условия (что логично), проверяются по очереди…т.е. если условие1 уже не TRUE, то второе даже проверяться не будет.
Это легко проверить:
//функция выводит на экран "проверили а" и возвращает FALSE function a(){ echo ' Проверили A';return false; } //функция выводит на экран "проверили б" и возвращает TRUE function b(){ echo ' Проверили Б';return true; } //теперь само условие, т.е. мы if(a() & b()){ echo ' >Условие выполнено'; }else{ echo ' >Условие не выполнено'; } /* в результате получим: Проверили A Проверили Б >Условие не выполнено т.е. Скрипт проверил оба условия, а если использовать двойной амперсант: */ if(a() && b()){ echo ' >Условие выполнено'; }else{ echo ' >Условие не выполнено'; } /* в результате получим: Проверили A >Условие не выполнено т.е. Скрипт даже не проверял условие2, что очень удобно, если b() очень сложная функция, которую и проверять не стоит, если условие1 (a()) уже не TRUE */
Таким же образом обстоят дела с оператором “ИЛИ”, т.е. | вертикальной чертой.
Если использовать if(условие1 | условие2){…} , то проверятся оба условия, затем будет принято решение, но это увеличит нагрузку…
А если использовать if(условие1 || условие2){…} , то при положительном условии1, условие2 даже проверяться не будет, т.к. “ИЛИ” и одно TRUE уже есть.
Думаю, кому-нибудь пригодится.
Удачи!