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