HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-02-26
1 <p>Посмотрите на определение функции, которая возвращает модуль переданного числа:</p>
1 <p>Посмотрите на определение функции, которая возвращает модуль переданного числа:</p>
2 <p>Можно ли записать ее лаконичнее? Что-то вроде return ОТВЕТ В ЗАВИСИМОСТИ ОТ УСЛОВИЯ? Для этого справа от return должно быть выражение. Но есть проблема: if - это инструкция, а не выражение.</p>
2 <p>Можно ли записать ее лаконичнее? Что-то вроде return ОТВЕТ В ЗАВИСИМОСТИ ОТ УСЛОВИЯ? Для этого справа от return должно быть выражение. Но есть проблема: if - это инструкция, а не выражение.</p>
3 <p>В PHP существует конструкция, которая по своему действию аналогична конструкции<em>if-else</em>, но при этом является выражением. Она называется<strong>тернарный оператор</strong>, и именно его мы изучим в этом уроке.</p>
3 <p>В PHP существует конструкция, которая по своему действию аналогична конструкции<em>if-else</em>, но при этом является выражением. Она называется<strong>тернарный оператор</strong>, и именно его мы изучим в этом уроке.</p>
4 <p><strong>Тернарный оператор</strong>- единственный в своем роде оператор, требующий три операнда:</p>
4 <p><strong>Тернарный оператор</strong>- единственный в своем роде оператор, требующий три операнда:</p>
5 <p>Общий паттерн выглядит так:</p>
5 <p>Общий паттерн выглядит так:</p>
6 <p>Давайте перепишем начальный вариант getTypeOfSentence() аналогично. Посмотрим, как было:</p>
6 <p>Давайте перепишем начальный вариант getTypeOfSentence() аналогично. Посмотрим, как было:</p>
7 <p>А теперь - как стало:</p>
7 <p>А теперь - как стало:</p>
8 <p>Вы уже могли догадаться, что тернарный оператор можно вкладывать в тернарный оператор. Это возможно, но лучше так не делать. Такой код тяжело читать и отлаживать, поэтому вложенные тернарные операторы считаются очень плохой практикой.</p>
8 <p>Вы уже могли догадаться, что тернарный оператор можно вкладывать в тернарный оператор. Это возможно, но лучше так не делать. Такой код тяжело читать и отлаживать, поэтому вложенные тернарные операторы считаются очень плохой практикой.</p>
9 <h2>Оператор Элвис</h2>
9 <h2>Оператор Элвис</h2>
10 <p>Представим такую задачу: на сайте у пользователей могут быть имена и псевдонимы. Если имя есть, то нужно обращаться к человеку по имени. Если имени нет - обращаемся по псевдониму. Попробуем собрать строку с приветствием человека по этим требованиям:</p>
10 <p>Представим такую задачу: на сайте у пользователей могут быть имена и псевдонимы. Если имя есть, то нужно обращаться к человеку по имени. Если имени нет - обращаемся по псевдониму. Попробуем собрать строку с приветствием человека по этим требованиям:</p>
11 <p>Мы воспользовались тем фактом, что PHP преобразовывает типы. В коде if ($name) PHP превратит $name в тип bool. Если была пустая строка, то получится false. В ином случае получится true.</p>
11 <p>Мы воспользовались тем фактом, что PHP преобразовывает типы. В коде if ($name) PHP превратит $name в тип bool. Если была пустая строка, то получится false. В ином случае получится true.</p>
12 <p>С тернарным оператором можно получить более короткую запись:</p>
12 <p>С тернарным оператором можно получить более короткую запись:</p>
13 <p>Это частый случай - мы оперируем значениями bool и получаем:</p>
13 <p>Это частый случай - мы оперируем значениями bool и получаем:</p>
14 <ul><li>Первое значение, если true</li>
14 <ul><li>Первое значение, если true</li>
15 <li>Второе значение в ином случае</li>
15 <li>Второе значение в ином случае</li>
16 </ul><p>В PHP для таких случаев есть специальный оператор:</p>
16 </ul><p>В PHP для таких случаев есть специальный оператор:</p>
17 <p>Оператор ?: - бинарный оператор, который возвращает первый операнд если он истинен, и второй в ином случае. Еще его называют Elvis, потому что это слово похоже на<em>else if</em>. А еще из-за визуального сходства с Элвисом Пресли:</p>
17 <p>Оператор ?: - бинарный оператор, который возвращает первый операнд если он истинен, и второй в ином случае. Еще его называют Elvis, потому что это слово похоже на<em>else if</em>. А еще из-за визуального сходства с Элвисом Пресли:</p>
18  
18