HTML Diff
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>