Основы PHP
2026-02-26 22:57 Diff

В этом уроке мы изучим три важных конструкции языка PHP — if, else и else if.

if

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

Напишем функцию, которая определяет тип переданного предложения. Для начала она будет отличать обычные предложения от вопросительных:

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

В нашем случае следующая строчка кода — return 'normal';. Она заставит функцию вернуть строку и завершиться. Как видите, return может находиться где угодно в функции, в том числе — внутри блока кода с условием.

else

Попробуем изменить функцию из предыдущего примера так, чтобы она возвращала не просто тип предложения, а целую строку Sentence is normal или Sentence is question:

Мы добавили else и новый блок с фигурными скобками. Этот блок выполнится, только если условие в if — ложь.

Существует два способа оформления конструкции if-else. С помощью отрицания !== можно изменить порядок блоков:

Какой способ предпочтительнее? Обычно людям проще мыслить прямолинейно, а не через отрицание. Старайтесь выбирать проверку без отрицаний и подстраивайте содержимое блоков под нее.

Конструкция else if

Функция getTypeOfSentence() различает только вопросительные и обычные предложения. Давайте попробуем добавить поддержку восклицательных предложений:

Мы добавили еще одну проверку (exclamation переводится «восклицание»). Технически функция работает, но с точки зрения семантики есть проблемы:

  • Проверка на наличие вопросительного знака происходит в любом случае, даже если уже был обнаружен восклицательный знак
  • Ветка else описана именно для первого условия, но не для второго

Правильнее будет воспользоваться еще одной возможностью условной конструкции:

Теперь все условия выстроены в единую конструкцию.

Конструкция elseif — это «если не выполнено предыдущее условие, но выполнено текущее». Получается такая схема:

  • Если последний символ ?, то 'question'
  • Иначе, если последний символ !, то 'exclamation'
  • Иначе 'normal'

Выполнится только один из блоков кода, относящихся ко всей конструкции if.