0 added
0 removed
Original
2026-01-01
Modified
2026-02-26
1
<p>В этом уроке мы изучим три важных конструкции языка PHP - if, else и else if.</p>
1
<p>В этом уроке мы изучим три важных конструкции языка PHP - if, else и else if.</p>
2
<h2>if</h2>
2
<h2>if</h2>
3
<p>Задача предиката - получить ответ на вопрос, но обычно этого недостаточно и нужно выполнить определенное действие в зависимости от ответа.</p>
3
<p>Задача предиката - получить ответ на вопрос, но обычно этого недостаточно и нужно выполнить определенное действие в зависимости от ответа.</p>
4
<p>Напишем функцию, которая определяет тип переданного предложения. Для начала она будет отличать обычные предложения от вопросительных:</p>
4
<p>Напишем функцию, которая определяет тип переданного предложения. Для начала она будет отличать обычные предложения от вопросительных:</p>
5
<p>if - это инструкция. В скобках ей передается выражение-предикат, а затем описывается блок кода в фигурных скобках. Этот блок кода будет выполнен, только если предикат - истина. Если предикат - ложь, то блок кода в фигурных скобках пропускается, и функция продолжает свое выполнение дальше.</p>
5
<p>if - это инструкция. В скобках ей передается выражение-предикат, а затем описывается блок кода в фигурных скобках. Этот блок кода будет выполнен, только если предикат - истина. Если предикат - ложь, то блок кода в фигурных скобках пропускается, и функция продолжает свое выполнение дальше.</p>
6
<p>В нашем случае следующая строчка кода - return 'normal';. Она заставит функцию вернуть строку и завершиться. Как видите, return может находиться где угодно в функции, в том числе - внутри блока кода с условием.</p>
6
<p>В нашем случае следующая строчка кода - return 'normal';. Она заставит функцию вернуть строку и завершиться. Как видите, return может находиться где угодно в функции, в том числе - внутри блока кода с условием.</p>
7
<h2>else</h2>
7
<h2>else</h2>
8
<p>Попробуем изменить функцию из предыдущего примера так, чтобы она возвращала не просто тип предложения, а целую строку<em>Sentence is normal</em>или<em>Sentence is question</em>:</p>
8
<p>Попробуем изменить функцию из предыдущего примера так, чтобы она возвращала не просто тип предложения, а целую строку<em>Sentence is normal</em>или<em>Sentence is question</em>:</p>
9
<p>Мы добавили else и новый блок с фигурными скобками. Этот блок выполнится, только если условие в if - ложь.</p>
9
<p>Мы добавили else и новый блок с фигурными скобками. Этот блок выполнится, только если условие в if - ложь.</p>
10
<p>Существует два способа оформления конструкции<em>if-else</em>. С помощью отрицания !== можно изменить порядок блоков:</p>
10
<p>Существует два способа оформления конструкции<em>if-else</em>. С помощью отрицания !== можно изменить порядок блоков:</p>
11
<p>Какой способ предпочтительнее? Обычно людям проще мыслить прямолинейно, а не через отрицание. Старайтесь выбирать проверку без отрицаний и подстраивайте содержимое блоков под нее.</p>
11
<p>Какой способ предпочтительнее? Обычно людям проще мыслить прямолинейно, а не через отрицание. Старайтесь выбирать проверку без отрицаний и подстраивайте содержимое блоков под нее.</p>
12
<h2>Конструкция else if</h2>
12
<h2>Конструкция else if</h2>
13
<p>Функция getTypeOfSentence() различает только вопросительные и обычные предложения. Давайте попробуем добавить поддержку восклицательных предложений:</p>
13
<p>Функция getTypeOfSentence() различает только вопросительные и обычные предложения. Давайте попробуем добавить поддержку восклицательных предложений:</p>
14
<p>Мы добавили еще одну проверку (<em>exclamation</em>переводится "восклицание"). Технически функция работает, но с точки зрения семантики есть проблемы:</p>
14
<p>Мы добавили еще одну проверку (<em>exclamation</em>переводится "восклицание"). Технически функция работает, но с точки зрения семантики есть проблемы:</p>
15
<ul><li>Проверка на наличие вопросительного знака происходит в любом случае, даже если уже был обнаружен восклицательный знак</li>
15
<ul><li>Проверка на наличие вопросительного знака происходит в любом случае, даже если уже был обнаружен восклицательный знак</li>
16
<li>Ветка else описана именно для первого условия, но не для второго</li>
16
<li>Ветка else описана именно для первого условия, но не для второго</li>
17
</ul><p>Правильнее будет воспользоваться еще одной возможностью условной конструкции:</p>
17
</ul><p>Правильнее будет воспользоваться еще одной возможностью условной конструкции:</p>
18
<p>Теперь все условия выстроены в единую конструкцию.</p>
18
<p>Теперь все условия выстроены в единую конструкцию.</p>
19
<p>Конструкция elseif - это "если не выполнено предыдущее условие, но выполнено текущее". Получается такая схема:</p>
19
<p>Конструкция elseif - это "если не выполнено предыдущее условие, но выполнено текущее". Получается такая схема:</p>
20
<ul><li>Если последний символ ?, то 'question'</li>
20
<ul><li>Если последний символ ?, то 'question'</li>
21
<li>Иначе, если последний символ !, то 'exclamation'</li>
21
<li>Иначе, если последний символ !, то 'exclamation'</li>
22
<li>Иначе 'normal'</li>
22
<li>Иначе 'normal'</li>
23
</ul><p>Выполнится только один из блоков кода, относящихся ко всей конструкции if.</p>
23
</ul><p>Выполнится только один из блоков кода, относящихся ко всей конструкции if.</p>