Как в операторе if проверить сразу несколько условий
Перейти к содержимому

Как в операторе if проверить сразу несколько условий

  • автор:

Операторы PHP: If, Else и If-Else

В этом руководстве мы поговорим об операторах if , else и if else . Это наиболее часто используемые условные операторы, умелое управление которыми считается одним из важнейших навыков в программировании.

Условные операторы

Часто при написании кода необходимо выполнить разный код в зависимости от условий. Для этого случая и нужны условные операторы.

В PHP используются следующие условные операторы:

  • if: выполнить определенный код, если некоторое условие истинно;
  • else: если определенное условие(я) не истинно(ы), выполнить этот код;
  • if else: если вышеуказанное условие(я) не истинно(ы), выполнить этот код;
  • switch: в зависимости от значения переменной выполнить какой-то конкретный код.

Оператор if

Оператор if используется для принятия решений.

Синтаксис

В приведенном выше примере внутри скобки находится условие, которое нужно проверить на истинность; если условие истинно, следует выполнить код внутри этих скобок <> .

Пример

Допустим, мы хотим написать оператор if , чтобы убедиться, что $a не равно 0 .

Результат

Обратите внимание на то, используете ли вы оператор == корректно. Помните: если вы хотите проверить, равно ли что-то чему-то, вы должны использовать знак == ; одинарный знак равенства = означает в PHP присвоение.

Внутри фигурных скобок вы можете написать столько кода, сколько захотите. Здесь нет ограничений на количество выполняемого внутри скобок кода.

Оператор Else

Выше мы разобрали случай, когда нам надо было выполнить определенный код при истинности некоторого условия. А что если требуется выполнение кода, когда условие не является истинным?

В этом случае нужно использовать оператор else .

Задача оператора else состоит в том, чтобы выполнять код, когда ни одно из условий if не является истинным.

Приведенный выше код проверит, равно ли $a 0 . Если равно, то он покажет сообщение your variable cannot be equal to zero “ваша переменная не может быть равна нулю”. Если нет, то будет выведено сообщение good job .

Оператор Else if

Итак, мы узнали назначение и способ действия операторов if и else .

Однако у нас есть проблема: если вы используете только оператор if else , перед вами всего лишь два варианта развития событий:

  • либо вы выполняете условие, и тогда происходит что-то одно;
  • либо вы не выполняете условие, и происходит что-то другое.

А если мы хотим проверить более одного условия?

Допустим, нам нужно проверить значение A . Если $a равно 0 , выполняется блок кода A . Если $a находится в диапазоне от 1 до 20 , выполняется блок кода B . Если $a больше 20 , выполняется блок кода C . А если $a не равно ни одному из вышеперечисленных условий, выполняется блок кода D .

Пример

Результат

Следует отметить один маленький момент: нет никакой разницы между написанием else if или elseif : и то, и другое означает абсолютно одно и то же.

Разница между If и else If

Почему же иногда нужно использовать else if , а не просто if ?

Эти два оператора не идентичны, и если сделать неправильный выбор, это может сказаться на работе программы.

Если вы используете else if , то при совпадении одного из условий не проверяются другие условия и работа оператора прекращается.

В приведенном выше примере мы установили $a равным 22 . Но 22 — это четное число, поэтому оно также соответствует второму условию. Однако программа не будет продолжать проверку дополнительных условий в цикле.

Другое дело, если бы мы написали код следующим образом:

Здесь два дополнительных оператора if означают, что будет проверено второе условие — является ли $a четным или нет. Следовательно, второй блок кода будет выполнен, в отличие от первого примера.

Как сделать несколько условий в if и чтобы они все выполнялись?

Но вот загвоздка в if должны исполниться обе функции а оператор && проверяет сперва одну если там false то вторую даже не проверяет.

Обе функции возвращают true или false от результата работы. Но в них еще есть функционал который нужно исполнить в обеих независимо от результата.

Придумал варианты записать через запятую)) работает ну js все хавает не знаю правильно ли это.
Еще есть придумал вариант с умножением) true * true = 2 a true * true * false = 0
Еще есть мысль возвращать число 0 или 1 и потом считать сумму и если она равна количеству функций тогда все ок.

Ну это мои варианты. Гугл что то ничего не выдает полезного на этот счет..
Просто интересно есть какое вариант 100% правильный. Вызвать обе функции в if

can you have two conditions in an if statement

I’m a beginner in coding. I was recently working with to create a chatting programme where a user will chat with my computer. Here is a part of the code:

The conditions of the if statements are in Bold (surrounded with ** ). In case of first and the second condition I want my application to do same thing. Similarly third and fourth condition. I thought it was possible to somehow group them in if statement.

I tried with below code but it doesn’t compile:

Can someone correct it for me?

Pshemo's user avatar

6 Answers 6

You can use logical operators to combine your boolean expressions .

  • && is a logical and (both conditions need to be true )
  • || is a logical or (at least one condition needs to be true )
  • ^ is a xor (exactly one condition needs to be true )
  • ( == compares objects by identity)

There are also bitwise operators:

  • & is a bitwise and
  • | is a bitwise or
  • ^ is a xor

They are mainly used when operating with bits and bytes . However there is another difference, let’s take again a look at this expression:

If you use the logical operators and firstCondition evaluates to false then Java will not compute the second or third condition as the result of the whole logical expression is already known to be false . However if you use the bitwise operators then Java will not stop and continue computing everything:

Zabuzard's user avatar

Here are some common symbols used in everyday language and their programming analogues:

  • «,» usually refers to «and» in everyday language. Thus, this would translate to the AND operator, && , in Java.
  • «/» usually refers to «or» in everyday language. Thus, this would translate to the OR operator, || , in Java.

«XOR» is simply «x || y but both cannot be true at the same time». This translates to x ^ y in Java.

In your code, you probably meant to use «or» (you just used the incorrect «incorrect solution» :p), so you should use «||» in the second code block for it to become identical to the first code block.

Hope this helped 🙂

You’re looking for the «OR» operator — which is normally represented by a double pipe: ||

This is probably more answer than you need at this point. But, as several others already point out, you need the OR operator «||». There are a couple of points that nobody else has mentioned:

1) If (b.equals(«good») || b.equals(«it was good»)) <— If «b» is null here, you’ll get a null pointer exception (NPE). If you are genuinely looking at hard-coded values, like you are here, then you can reverse the comparison. E.g.

if («good».equals(b) || «it was good».equals(b))

The advantage of doing it this way is that the logic is precisely the same, but you’ll never get an NPE, and the logic will work just how you expect.

2) Java uses «short-circuit» testing. Which in lay-terms means that Java stops testing conditions once it’s sure of the result, even if all the conditions have not yet been tested. E.g.:

if((b != null) && (b.equals(«good») || b.equals(«it was good»)))

You will not get an NPE in the code above because of short-circuit nature. If «b» is null, Java can be assured that no matter what the results of the next conditions, the answer will always be false. So it doesn’t bother performing those tests.

Again, that’s probably more information than you’re prepared to deal with at this stage, but at some point in the near future the NPE of your test will bite you. 🙂

Условное ветвление: if, ‘?’

Иногда нам нужно выполнить различные действия в зависимости от условий.

Для этого мы можем использовать инструкцию if и условный оператор ? , который также называют оператором «вопросительный знак».

Инструкция «if»

Инструкция if(. ) вычисляет условие в скобках и, если результат true , то выполняет блок кода.

В примере выше, условие – это простая проверка на равенство ( year == 2015 ), но оно может быть и гораздо более сложным.

Если мы хотим выполнить более одной инструкции, то нужно заключить блок кода в фигурные скобки:

Мы рекомендуем использовать фигурные скобки <> всегда, когда вы используете инструкцию if , даже если выполняется только одна команда. Это улучшает читаемость кода.

Преобразование к логическому типу

Инструкция if (…) вычисляет выражение в скобках и преобразует результат к логическому типу.

Давайте вспомним правила преобразования типов из главы Преобразование типов:

  • Число 0 , пустая строка "" , null , undefined и NaN становятся false . Из-за этого их называют «ложными» («falsy») значениями.
  • Остальные значения становятся true , поэтому их называют «правдивыми» («truthy»).

Таким образом, код при таком условии никогда не выполнится:

…а при таком – выполнится всегда:

Мы также можем передать заранее вычисленное в переменной логическое значение в if , например так:

Блок «else»

Инструкция if может содержать необязательный блок «else» («иначе»). Он выполняется, когда условие ложно.

Несколько условий: «else if»

Иногда нужно проверить несколько вариантов условия. Для этого используется блок else if .

В приведённом выше коде JavaScript сначала проверит year < 2015 . Если это неверно, он переходит к следующему условию year > 2015 . Если оно тоже ложно, тогда сработает последний alert .

Блоков else if может быть и больше. Присутствие блока else не является обязательным.

Условный оператор „?“

Иногда нам нужно определить переменную в зависимости от условия.

Так называемый «условный» оператор «вопросительный знак» позволяет нам сделать это более коротким и простым способом.

Оператор представлен знаком вопроса ? . Его также называют «тернарный», так как этот оператор, единственный в своём роде, имеет три аргумента.

Сначала вычисляется условие : если оно истинно, тогда возвращается значение1 , в противном случае – значение2 .

Технически, мы можем опустить круглые скобки вокруг age > 18 . Оператор вопросительного знака имеет низкий приоритет, поэтому он выполняется после сравнения > .

Этот пример будет делать то же самое, что и предыдущий:

Но скобки делают код более простым для восприятия, поэтому мы рекомендуем их использовать.

В примере выше вы можете избежать использования оператора вопросительного знака ? , т.к. сравнение само по себе уже возвращает true/false :

Несколько операторов „?“

Последовательность операторов вопросительного знака ? позволяет вернуть значение, которое зависит от более чем одного условия.

Поначалу может быть сложно понять, что происходит. Но при ближайшем рассмотрении мы видим, что это обычная последовательная проверка:

  1. Первый знак вопроса проверяет age < 3 .
  2. Если верно – возвращает ‘Здравствуй, малыш!’ . В противном случае, проверяет выражение после двоеточия „:“, вычисляет age < 18 .
  3. Если это верно – возвращает ‘Привет!’ . В противном случае, проверяет выражение после следующего двоеточия „:“, вычисляет age < 100 .
  4. Если это верно – возвращает ‘Здравствуйте!’ . В противном случае, возвращает выражение после последнего двоеточия – ‘Какой необычный возраст!’ .

Вот как это выглядит при использовании if..else :

Нетрадиционное использование „?“

Иногда оператор «вопросительный знак» ? используется в качестве замены if :

В зависимости от условия company == ‘Netscape’ , будет выполнена либо первая, либо вторая часть после ? .

Здесь мы не присваиваем результат переменной. Вместо этого мы выполняем различный код в зависимости от условия.

Не рекомендуется использовать оператор вопросительного знака таким образом.

Несмотря на то, что такая запись короче, чем эквивалентная инструкция if , она хуже читается.

Вот, для сравнения, тот же код, использующий if :

При чтении глаза сканируют код по вертикали. Блоки кода, занимающие несколько строк, воспринимаются гораздо легче, чем длинный горизонтальный набор инструкций.

Смысл оператора «вопросительный знак» ? – вернуть то или иное значение, в зависимости от условия. Пожалуйста, используйте его именно для этого. Когда вам нужно выполнить разные ветви кода – используйте if .

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *