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 уже есть.
Думаю, кому-нибудь пригодится.
Удачи!